From de9f297b176cb88b478baf5af71d38ff9dbe7548 Mon Sep 17 00:00:00 2001 From: sunkaixuan <610262374@qq.com> Date: Thu, 25 May 2017 12:39:51 +0800 Subject: [PATCH] - --- OrmTest/Demo/Query.cs | 1 + OrmTest/Demo/Update.cs | 3 +- .../DbMaintenanceProvider.cs | 1 + .../DeleteProvider/DeleteableProvider.cs | 19 +++++++++++ .../InsertableProvider/InsertableProvider.cs | 28 ++++++++++++++-- .../QueryableProvider/QueryableProvider.cs | 32 +++++++++++++++++-- .../UpdateProvider/UpdateableProvider.cs | 23 +++++++++++-- SqlSugar/Interface/IDeleteable.cs | 1 + SqlSugar/Interface/IQueryable.cs | 2 ++ SqlSugar/Interface/IUpdateable.cs | 1 + SqlSugar/Interface/Insertable.cs | 1 + 11 files changed, 104 insertions(+), 8 deletions(-) diff --git a/OrmTest/Demo/Query.cs b/OrmTest/Demo/Query.cs index df67239e9..d23139650 100644 --- a/OrmTest/Demo/Query.cs +++ b/OrmTest/Demo/Query.cs @@ -63,6 +63,7 @@ namespace OrmTest.Demo var sum = db.Queryable().Sum(it=>it.Id); var isAny = db.Queryable().Where(it=>it.Id==-1).Any(); var isAny2 = db.Queryable().Any(it => it.Id == -1); + var getListByRename = db.Queryable().AS("Student").ToList(); } public static void Page() diff --git a/OrmTest/Demo/Update.cs b/OrmTest/Demo/Update.cs index 793dfce72..07d3700ac 100644 --- a/OrmTest/Demo/Update.cs +++ b/OrmTest/Demo/Update.cs @@ -51,8 +51,7 @@ namespace OrmTest.Demo .Where(it => it.Id == 11).ExecuteCommand(); //Rename - db.MappingTables.Add("School", "Student"); - db.Updateable().UpdateColumns(it => new School() { Name = "jack" }).Where(it => it.Id == 1).ExecuteCommand(); + db.Updateable().AS("Student").UpdateColumns(it => new School() { Name = "jack" }).Where(it => it.Id == 1).ExecuteCommand(); //Update Student set Name='jack' Where Id=1 } public static SqlSugarClient GetInstance() diff --git a/SqlSugar/Abstract/DbMaintenanceProvider/DbMaintenanceProvider.cs b/SqlSugar/Abstract/DbMaintenanceProvider/DbMaintenanceProvider.cs index ee84e1d4b..f62d7d753 100644 --- a/SqlSugar/Abstract/DbMaintenanceProvider/DbMaintenanceProvider.cs +++ b/SqlSugar/Abstract/DbMaintenanceProvider/DbMaintenanceProvider.cs @@ -28,6 +28,7 @@ namespace SqlSugar } public virtual List GetColumnInfosByTableName(string tableName) { + if (string.IsNullOrEmpty(tableName)) return new List(); string key = "DbMaintenanceProvider.GetColumnInfosByTableName." + tableName.ToLower(); return GetListOrCache(key, this.GetColumnInfosByTableNameSql); } diff --git a/SqlSugar/Abstract/DeleteProvider/DeleteableProvider.cs b/SqlSugar/Abstract/DeleteProvider/DeleteableProvider.cs index 19b9721ab..7e2460e26 100644 --- a/SqlSugar/Abstract/DeleteProvider/DeleteableProvider.cs +++ b/SqlSugar/Abstract/DeleteProvider/DeleteableProvider.cs @@ -13,6 +13,8 @@ namespace SqlSugar public IAdo Db { get { return Context.Ado; } } public ISqlBuilder SqlBuilder { get; set; } public DeleteBuilder DeleteBuilder { get; set; } + public MappingTableList OldMappingTableList { get; set; } + public bool IsAs { get; set; } public EntityInfo EntityInfo { get @@ -25,8 +27,17 @@ namespace SqlSugar DeleteBuilder.EntityInfo = this.Context.EntityProvider.GetEntityInfo(); string sql = DeleteBuilder.ToSqlString(); var paramters = DeleteBuilder.Parameters==null?null:DeleteBuilder.Parameters.ToArray(); + RestoreMapping(); return Db.GetInt(sql, paramters); } + public IDeleteable AS(string tableName) + { + var entityName = typeof(T).Name; + IsAs = true; + this.Context.MappingTables = this.Context.RewritableMethods.TranslateCopy(this.Context.MappingTables); + this.Context.MappingTables.Add(entityName, tableName); + return this; ; + } public IDeleteable Where(List deleteObjs) { @@ -149,6 +160,7 @@ namespace SqlSugar DeleteBuilder.EntityInfo = this.Context.EntityProvider.GetEntityInfo(); string sql = DeleteBuilder.ToSqlString(); var paramters = DeleteBuilder.Parameters == null ? null : DeleteBuilder.Parameters.ToList(); + RestoreMapping(); return new KeyValuePair>(sql, paramters); } @@ -175,5 +187,12 @@ namespace SqlSugar return this.EntityInfo.Columns.Where(it => it.IsIdentity).Select(it => it.DbColumnName).ToList(); } } + private void RestoreMapping() + { + if (IsAs) + { + this.Context.MappingTables = OldMappingTableList; + } + } } } diff --git a/SqlSugar/Abstract/InsertableProvider/InsertableProvider.cs b/SqlSugar/Abstract/InsertableProvider/InsertableProvider.cs index 3f636fecb..e8aa8b30a 100644 --- a/SqlSugar/Abstract/InsertableProvider/InsertableProvider.cs +++ b/SqlSugar/Abstract/InsertableProvider/InsertableProvider.cs @@ -24,29 +24,46 @@ namespace SqlSugar private bool IsOffIdentity { get; set; } public T[] InsertObjs { get; set; } + public MappingTableList OldMappingTableList { get; set; } + public bool IsAs { get; set; } + #region Core public int ExecuteCommand() { InsertBuilder.IsReturnIdentity = false; PreToSql(); - return Ado.ExecuteCommand(InsertBuilder.ToSqlString(), InsertBuilder.Parameters.ToArray()); + string sql = InsertBuilder.ToSqlString(); + RestoreMapping(); + return Ado.ExecuteCommand(sql, InsertBuilder.Parameters.ToArray()); } + public KeyValuePair> ToSql() { InsertBuilder.IsReturnIdentity = true; PreToSql(); string sql = InsertBuilder.ToSqlString(); + RestoreMapping(); return new KeyValuePair>(sql, InsertBuilder.Parameters); } public int ExecuteReutrnIdentity() { InsertBuilder.IsReturnIdentity = true; PreToSql(); - return Ado.GetInt(InsertBuilder.ToSqlString(), InsertBuilder.Parameters.ToArray()); + string sql = InsertBuilder.ToSqlString(); + RestoreMapping(); + return Ado.GetInt(sql, InsertBuilder.Parameters.ToArray()); } #endregion #region Setting + public IInsertable AS(string tableName) + { + var entityName = typeof(T).Name; + IsAs = true; + this.Context.MappingTables = this.Context.RewritableMethods.TranslateCopy(this.Context.MappingTables); + this.Context.MappingTables.Add(entityName, tableName); + return this; ; + } public IInsertable IgnoreColumns(Expression> columns) { var ignoreColumns = InsertBuilder.GetExpressionValue(columns, ResolveExpressType.Array).GetResultArray(); @@ -188,6 +205,13 @@ namespace SqlSugar return this.EntityInfo.Columns.Where(it => it.IsIdentity).Select(it => it.DbColumnName).ToList(); } } + private void RestoreMapping() + { + if (IsAs) + { + this.Context.MappingTables = OldMappingTableList; + } + } #endregion } } diff --git a/SqlSugar/Abstract/QueryableProvider/QueryableProvider.cs b/SqlSugar/Abstract/QueryableProvider/QueryableProvider.cs index ad95c2cfd..c833f4e7b 100644 --- a/SqlSugar/Abstract/QueryableProvider/QueryableProvider.cs +++ b/SqlSugar/Abstract/QueryableProvider/QueryableProvider.cs @@ -16,6 +16,8 @@ namespace SqlSugar public IAdo Db { get { return Context.Ado; } } public IDbBind Bind { get { return this.Db.DbBind; } } public ISqlBuilder SqlBuilder { get; set; } + public MappingTableList OldMappingTableList { get; set; } + public bool IsAs { get; set; } public QueryBuilder QueryBuilder { get @@ -34,7 +36,22 @@ namespace SqlSugar { QueryBuilder.Clear(); } - + public ISugarQueryable AS(string tableName) + { + var entityName = typeof(T2).Name; + IsAs = true; + this.Context.MappingTables = this.Context.RewritableMethods.TranslateCopy(this.Context.MappingTables); + this.Context.MappingTables.Add(entityName, tableName); + return this; + } + public ISugarQueryable AS(string tableName) + { + var entityName = typeof(T).Name; + IsAs = true; + this.Context.MappingTables = this.Context.RewritableMethods.TranslateCopy(this.Context.MappingTables); + this.Context.MappingTables.Add(entityName, tableName); + return this; + } public ISugarQueryable AddParameters(object whereObj) { if (whereObj != null) @@ -395,7 +412,7 @@ namespace SqlSugar public bool Any() { - return this.Count()>0; + return this.Count() > 0; } public ISugarQueryable Select(Expression> expression) @@ -450,6 +467,7 @@ namespace SqlSugar QueryBuilder.IsCount = true; var sql = QueryBuilder.ToSqlString(); var reval = Context.Ado.GetInt(sql, QueryBuilder.Parameters.ToArray()); + RestoreMapping(); QueryBuilder.IsCount = false; return reval; } @@ -530,6 +548,7 @@ namespace SqlSugar public KeyValuePair> ToSql() { string sql = QueryBuilder.ToSqlString(); + RestoreMapping(); return new KeyValuePair>(sql, QueryBuilder.Parameters); } @@ -542,6 +561,7 @@ namespace SqlSugar public DataTable ToDataTable() { var sqlObj = this.ToSql(); + RestoreMapping(); var result = this.Db.GetDataTable(sqlObj.Key, sqlObj.Value.ToArray()); return result; } @@ -632,6 +652,7 @@ namespace SqlSugar } if (this.Context.CurrentConnectionConfig.IsAutoCloseConnection) this.Context.Close(); } + RestoreMapping(); return result; } private List GetPrimaryKeys() @@ -656,6 +677,13 @@ namespace SqlSugar return this.EntityInfo.Columns.Where(it => it.IsIdentity).Select(it => it.DbColumnName).ToList(); } } + private void RestoreMapping() + { + if (IsAs) + { + this.Context.MappingTables = OldMappingTableList; + } + } #endregion } } diff --git a/SqlSugar/Abstract/UpdateProvider/UpdateableProvider.cs b/SqlSugar/Abstract/UpdateProvider/UpdateableProvider.cs index 9c13de7d7..e40d207a2 100644 --- a/SqlSugar/Abstract/UpdateProvider/UpdateableProvider.cs +++ b/SqlSugar/Abstract/UpdateProvider/UpdateableProvider.cs @@ -22,12 +22,23 @@ namespace SqlSugar public List MappingColumnList { get; set; } private List IgnoreColumnNameList { get; set; } private bool IsOffIdentity { get; set; } + public MappingTableList OldMappingTableList { get; set; } + public bool IsAs { get; set; } public int ExecuteCommand() { PreToSql(); - return this.Ado.ExecuteCommand(UpdateBuilder.ToSqlString(), UpdateBuilder.Parameters == null ? null : UpdateBuilder.Parameters.ToArray()); + string sql = UpdateBuilder.ToSqlString(); + RestoreMapping(); + return this.Ado.ExecuteCommand(sql, UpdateBuilder.Parameters == null ? null : UpdateBuilder.Parameters.ToArray()); + } + public IUpdateable AS(string tableName) + { + var entityName = typeof(T).Name; + IsAs = true; + this.Context.MappingTables = this.Context.RewritableMethods.TranslateCopy(this.Context.MappingTables); + this.Context.MappingTables.Add(entityName, tableName); + return this; ; } - public IUpdateable IgnoreColumns(Func ignoreColumMethod) { this.UpdateBuilder.DbColumnInfoList = this.UpdateBuilder.DbColumnInfoList.Where(it => !ignoreColumMethod(it.PropertyName)).ToList(); @@ -59,6 +70,7 @@ namespace SqlSugar { PreToSql(); string sql = UpdateBuilder.ToSqlString(); + RestoreMapping(); return new KeyValuePair>(sql, UpdateBuilder.Parameters); } @@ -234,5 +246,12 @@ namespace SqlSugar return this.EntityInfo.Columns.Where(it => it.IsIdentity).Select(it => it.DbColumnName).ToList(); } } + private void RestoreMapping() + { + if (IsAs) + { + this.Context.MappingTables = OldMappingTableList; + } + } } } diff --git a/SqlSugar/Interface/IDeleteable.cs b/SqlSugar/Interface/IDeleteable.cs index bdc554968..7a1ffead3 100644 --- a/SqlSugar/Interface/IDeleteable.cs +++ b/SqlSugar/Interface/IDeleteable.cs @@ -10,6 +10,7 @@ namespace SqlSugar public interface IDeleteable where T : class, new() { int ExecuteCommand(); + IDeleteable AS(string tableName); IDeleteable With(string lockString); IDeleteable Where(T deleteObj); IDeleteable Where(Expression> expression); diff --git a/SqlSugar/Interface/IQueryable.cs b/SqlSugar/Interface/IQueryable.cs index 3574b37a1..db2ec69ef 100644 --- a/SqlSugar/Interface/IQueryable.cs +++ b/SqlSugar/Interface/IQueryable.cs @@ -12,6 +12,8 @@ namespace SqlSugar SqlSugarClient Context { get; set; } ISqlBuilder SqlBuilder { get; set; } + ISugarQueryable AS(string tableName); + ISugarQueryable AS(string tableName); ISugarQueryable With(string withString); ISugarQueryable AddParameters(object pars); ISugarQueryable AddParameters(SugarParameter[] pars); diff --git a/SqlSugar/Interface/IUpdateable.cs b/SqlSugar/Interface/IUpdateable.cs index cfcbc173c..c75c14361 100644 --- a/SqlSugar/Interface/IUpdateable.cs +++ b/SqlSugar/Interface/IUpdateable.cs @@ -10,6 +10,7 @@ namespace SqlSugar public interface IUpdateable { int ExecuteCommand(); + IUpdateable AS(string tableName); IUpdateable With(string lockString); IUpdateable Where(bool isUpdateNull,bool IsOffIdentity = false); IUpdateable Where(Expression> expression); diff --git a/SqlSugar/Interface/Insertable.cs b/SqlSugar/Interface/Insertable.cs index 9f0377ae4..3fd0be3e3 100644 --- a/SqlSugar/Interface/Insertable.cs +++ b/SqlSugar/Interface/Insertable.cs @@ -11,6 +11,7 @@ namespace SqlSugar { int ExecuteCommand(); int ExecuteReutrnIdentity(); + IInsertable AS(string tableName); IInsertable With(string lockString); IInsertable InsertColumns(Expression> columns); IInsertable IgnoreColumns(Expression> columns);