diff --git a/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Abstract/AdoProvider/AdoProvider.cs b/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Abstract/AdoProvider/AdoProvider.cs index b1978041b..409acd5b1 100644 --- a/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Abstract/AdoProvider/AdoProvider.cs +++ b/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Abstract/AdoProvider/AdoProvider.cs @@ -55,6 +55,7 @@ namespace SqlSugar public virtual Action LogEventStarting { get; set; } public virtual Action LogEventCompleted { get; set; } public virtual Func> ProcessingEventStartingSQL { get; set; } + protected virtual Func FormatSql { get; set; } public virtual Action ErrorEvent { get; set; } public virtual List SlaveConnections { get; set; } public virtual IDbConnection MasterConnection { get; set; } @@ -254,6 +255,8 @@ namespace SqlSugar { try { + if (FormatSql != null) + sql = FormatSql(sql); SetConnectionStart(sql); if (this.ProcessingEventStartingSQL != null) ExecuteProcessingSQL(ref sql, parameters); @@ -281,6 +284,8 @@ namespace SqlSugar { try { + if (FormatSql != null) + sql = FormatSql(sql); SetConnectionStart(sql); var isSp = this.CommandType == CommandType.StoredProcedure; if (this.ProcessingEventStartingSQL != null) @@ -307,6 +312,8 @@ namespace SqlSugar { try { + if (FormatSql != null) + sql = FormatSql(sql); SetConnectionStart(sql); if (this.ProcessingEventStartingSQL != null) ExecuteProcessingSQL(ref sql, parameters); @@ -337,6 +344,8 @@ namespace SqlSugar { try { + if (FormatSql != null) + sql = FormatSql(sql); SetConnectionStart(sql); if (this.ProcessingEventStartingSQL != null) ExecuteProcessingSQL(ref sql, parameters); diff --git a/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Abstract/DbBindProvider/IDataReaderEntityBuilder.cs b/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Abstract/DbBindProvider/IDataReaderEntityBuilder.cs index ec3e51be8..06050ecd2 100644 --- a/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Abstract/DbBindProvider/IDataReaderEntityBuilder.cs +++ b/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Abstract/DbBindProvider/IDataReaderEntityBuilder.cs @@ -109,7 +109,7 @@ namespace SqlSugar { if (!ReaderKeys.Contains(mappInfo.DbColumnName)) { - fileName = ReaderKeys.Single(it => it.Equals(mappInfo.DbColumnName, StringComparison.CurrentCultureIgnoreCase)); + fileName = ReaderKeys.First(it => it.Equals(mappInfo.DbColumnName, StringComparison.CurrentCultureIgnoreCase)|| it.Equals(mappInfo.PropertyName, StringComparison.CurrentCultureIgnoreCase)); } else { diff --git a/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Abstract/DbFirstProvider/DbFirstProvider.cs b/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Abstract/DbFirstProvider/DbFirstProvider.cs index 599335301..cc340da04 100644 --- a/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Abstract/DbFirstProvider/DbFirstProvider.cs +++ b/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Abstract/DbFirstProvider/DbFirstProvider.cs @@ -137,11 +137,18 @@ namespace SqlSugar { foreach (var tableInfo in this.TableInfoList) { - string classText = null; - string className = tableInfo.Name; - classText = GetClassString(tableInfo, ref className); - result.Remove(className); - result.Add(className, classText); + try + { + string classText = null; + string className = tableInfo.Name; + classText = GetClassString(tableInfo, ref className); + result.Remove(className); + result.Add(className, classText); + } + catch (Exception ex) + { + Check.Exception(true, "Table '{0}' error,You can filter it with Db.DbFirst.Where(name=>name!=\"{0}\" ) \r\n Error message:{1}", tableInfo.Name, ex.Message); + } } } return result; diff --git a/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Abstract/EntityMaintenance/EntityMaintenance.cs b/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Abstract/EntityMaintenance/EntityMaintenance.cs index 3ae9da45b..012805f43 100644 --- a/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Abstract/EntityMaintenance/EntityMaintenance.cs +++ b/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Abstract/EntityMaintenance/EntityMaintenance.cs @@ -135,6 +135,7 @@ namespace SqlSugar column.DataType = sugarColumn.ColumnDataType; column.DecimalDigits = sugarColumn.DecimalDigits; column.OracleSequenceName = sugarColumn.OracleSequenceName; + column.IsOnlyIgnoreInsert = sugarColumn.IsOnlyIgnoreInsert; } else { diff --git a/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Abstract/InsertableProvider/InsertableProvider.cs b/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Abstract/InsertableProvider/InsertableProvider.cs index 7acefba28..fc8d75d51 100644 --- a/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Abstract/InsertableProvider/InsertableProvider.cs +++ b/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Abstract/InsertableProvider/InsertableProvider.cs @@ -219,6 +219,15 @@ namespace SqlSugar return !currentIgnoreColumns.Any(i => it.PropertyName.Equals(i.PropertyName, StringComparison.CurrentCulture)); }).ToList(); } + + if (this.Context.IgnoreInsertColumns != null && this.Context.IgnoreInsertColumns.Any()) + { + var currentIgnoreColumns = this.Context.IgnoreInsertColumns.Where(it => it.EntityName == this.EntityInfo.EntityName).ToList(); + this.InsertBuilder.DbColumnInfoList = this.InsertBuilder.DbColumnInfoList.Where(it => + { + return !currentIgnoreColumns.Any(i => it.PropertyName.Equals(i.PropertyName, StringComparison.CurrentCulture)); + }).ToList(); + } #endregion if (this.IsSingle) { diff --git a/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Abstract/UpdateProvider/UpdateableProvider.cs b/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Abstract/UpdateProvider/UpdateableProvider.cs index a3b14e6e4..2603165d2 100644 --- a/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Abstract/UpdateProvider/UpdateableProvider.cs +++ b/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Abstract/UpdateProvider/UpdateableProvider.cs @@ -125,7 +125,7 @@ namespace SqlSugar item.IsPrimarykey = true; } } - this.UpdateBuilder.DbColumnInfoList = this.UpdateBuilder.DbColumnInfoList.Where(it => updateColumns.Any(uc => uc.Equals(it.PropertyName, StringComparison.CurrentCultureIgnoreCase)) || it.IsPrimarykey || it.IsIdentity).ToList(); + this.UpdateBuilder.DbColumnInfoList = this.UpdateBuilder.DbColumnInfoList.Where(it => updateColumns.Any(uc => uc.Equals(it.PropertyName, StringComparison.CurrentCultureIgnoreCase) || uc.Equals(it.DbColumnName, StringComparison.CurrentCultureIgnoreCase)) || it.IsPrimarykey || it.IsIdentity).ToList(); return this; } @@ -134,7 +134,7 @@ namespace SqlSugar Check.Exception(!binaryExp.NodeType.IsIn(ExpressionType.Equal), "No support {0}", columns.ToString()); Check.Exception(!(binaryExp.Left is MemberExpression), "No support {0}", columns.ToString()); Check.Exception(ExpressionTool.IsConstExpression(binaryExp.Left as MemberExpression), "No support {0}", columns.ToString()); - var expResult = UpdateBuilder.GetExpressionValue(columns, ResolveExpressType.WhereSingle).GetResultString().Trim().TrimStart('(').TrimEnd(')'); + var expResult = UpdateBuilder.GetExpressionValue(columns, ResolveExpressType.WhereSingle).GetResultString().Replace("))",") )").Replace("((", "( (").Trim().TrimStart('(').TrimEnd(')'); string key = SqlBuilder.GetNoTranslationColumnName(expResult); UpdateBuilder.SetValues.Add(new KeyValuePair(SqlBuilder.GetTranslationColumnName(key), expResult)); this.UpdateBuilder.DbColumnInfoList = this.UpdateBuilder.DbColumnInfoList.Where(it => UpdateBuilder.SetValues.Any(v => SqlBuilder.GetNoTranslationColumnName(v.Key).Equals(it.DbColumnName, StringComparison.CurrentCultureIgnoreCase) || SqlBuilder.GetNoTranslationColumnName(v.Key).Equals(it.PropertyName, StringComparison.CurrentCultureIgnoreCase)) || it.IsPrimarykey == true).ToList(); diff --git a/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Entities/EntityColumnInfo.cs b/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Entities/EntityColumnInfo.cs index 3fd7d3f3b..962ea2264 100644 --- a/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Entities/EntityColumnInfo.cs +++ b/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Entities/EntityColumnInfo.cs @@ -25,5 +25,6 @@ namespace SqlSugar public string DataType { get; set; } public int DecimalDigits { get; set; } public string OracleSequenceName { get; set; } + public bool IsOnlyIgnoreInsert { get; set; } } } diff --git a/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Entities/Mapping/SugarMappingAttribute.cs b/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Entities/Mapping/SugarMappingAttribute.cs index 8aa03c482..b9200945f 100644 --- a/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Entities/Mapping/SugarMappingAttribute.cs +++ b/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Entities/Mapping/SugarMappingAttribute.cs @@ -98,6 +98,13 @@ namespace SqlSugar get { return _OracleSequenceName; } set { _OracleSequenceName = value; } } + + private bool _IsOnlyIgnoreInsert; + public bool IsOnlyIgnoreInsert + { + get { return _IsOnlyIgnoreInsert; } + set { _IsOnlyIgnoreInsert = value; } + } } } diff --git a/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Entities/ModelContext.cs b/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Entities/ModelContext.cs index aec879c4f..302b68e8e 100644 --- a/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Entities/ModelContext.cs +++ b/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Entities/ModelContext.cs @@ -13,6 +13,7 @@ namespace SqlSugar public SqlSugarClient Context { get; set; } public ISugarQueryable CreateMapping() where T : class, new() { + Check.ArgumentNullException(Context, "Please use Sqlugar.ModelContext"); using (Context) { return Context.Queryable(); diff --git a/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/ExpressionsToSql/ExpressionContext.cs b/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/ExpressionsToSql/ExpressionContext.cs index fe09f78b4..5de16db12 100644 --- a/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/ExpressionsToSql/ExpressionContext.cs +++ b/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/ExpressionsToSql/ExpressionContext.cs @@ -124,6 +124,17 @@ namespace SqlSugar copyContext.ParameterIndex = this.ParameterIndex; return copyContext; } + public ExpressionContext GetCopyContextWithMapping() + { + ExpressionContext copyContext = (ExpressionContext)Activator.CreateInstance(this.GetType(), true); + copyContext.Index = this.Index; + copyContext.ParameterIndex = this.ParameterIndex; + copyContext.MappingColumns = this.MappingColumns; + copyContext.MappingTables = this.MappingTables; + copyContext.IgnoreComumnList = this.IgnoreComumnList; + copyContext.SqlFuncServices = this.SqlFuncServices; + return copyContext; + } #endregion #region Override methods diff --git a/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/ExpressionsToSql/ResolveItems/BaseResolve.cs b/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/ExpressionsToSql/ResolveItems/BaseResolve.cs index 91a0c1b51..d1685d092 100644 --- a/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/ExpressionsToSql/ResolveItems/BaseResolve.cs +++ b/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/ExpressionsToSql/ResolveItems/BaseResolve.cs @@ -379,7 +379,7 @@ namespace SqlSugar { if (this.Context.Result.IsLockCurrentParameter == false) { - var newContext = this.Context.GetCopyContext(); + var newContext = this.Context.GetCopyContextWithMapping(); var resolveExpressType = this.Context.IsSingle ? ResolveExpressType.WhereSingle : ResolveExpressType.WhereMultiple; newContext.Resolve(item, resolveExpressType); this.Context.Index = newContext.Index; diff --git a/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/IntegrationInterface/ICacheService.cs b/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/ExternalServiceInterface/ICacheService.cs similarity index 100% rename from Src/Asp.NetCore2/SqlSeverTest/SqlSugar/IntegrationInterface/ICacheService.cs rename to Src/Asp.NetCore2/SqlSeverTest/SqlSugar/ExternalServiceInterface/ICacheService.cs diff --git a/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/IntegrationInterface/ISerializeService.cs b/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/ExternalServiceInterface/ISerializeService.cs similarity index 100% rename from Src/Asp.NetCore2/SqlSeverTest/SqlSugar/IntegrationInterface/ISerializeService.cs rename to Src/Asp.NetCore2/SqlSeverTest/SqlSugar/ExternalServiceInterface/ISerializeService.cs diff --git a/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Infrastructure/SqlSugarAccessory.cs b/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Infrastructure/SqlSugarAccessory.cs index 1eb788dbe..9afac5e6f 100644 --- a/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Infrastructure/SqlSugarAccessory.cs +++ b/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Infrastructure/SqlSugarAccessory.cs @@ -49,6 +49,7 @@ namespace SqlSugar public MappingTableList MappingTables = new MappingTableList(); public MappingColumnList MappingColumns = new MappingColumnList(); public IgnoreColumnList IgnoreColumns = new IgnoreColumnList(); + public IgnoreColumnList IgnoreInsertColumns = new IgnoreColumnList(); #endregion #region Fields @@ -146,6 +147,8 @@ namespace SqlSugar this.Context.MappingColumns = new MappingColumnList(); if (this.Context.IgnoreColumns == null) this.Context.IgnoreColumns = new IgnoreColumnList(); + if (this.Context.IgnoreInsertColumns == null) + this.Context.IgnoreInsertColumns = new IgnoreColumnList(); if (!this.Context.MappingTables.Any(it => it.EntityName == entityInfo.EntityName)) { if (entityInfo.DbTableName != entityInfo.EntityName && entityInfo.DbTableName.HasValue()) @@ -168,6 +171,13 @@ namespace SqlSugar if (!ignoreInfos.Any(it => it.PropertyName == item.PropertyName)) this.Context.IgnoreColumns.Add(item.PropertyName, item.EntityName); } + + var ignoreInsertInfos = this.Context.IgnoreInsertColumns.Where(it => it.EntityName == entityInfo.EntityName); + foreach (var item in entityInfo.Columns.Where(it => it.IsOnlyIgnoreInsert)) + { + if (!ignoreInsertInfos.Any(it => it.PropertyName == item.PropertyName)) + this.Context.IgnoreInsertColumns.Add(item.PropertyName, item.EntityName); + } } } #endregion diff --git a/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/SqlSugar.csproj b/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/SqlSugar.csproj index fc4be8d95..bbc833511 100644 --- a/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/SqlSugar.csproj +++ b/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/SqlSugar.csproj @@ -2,7 +2,7 @@ netstandard2.0 - 4.6.0.9 + 4.6.1 sun_kai_xuan https://github.com/sunkaixuan/SqlSugar diff --git a/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/SqlSugarForCore.nuspec b/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/SqlSugarForCore.nuspec index 706938cac..ce596924d 100644 --- a/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/SqlSugarForCore.nuspec +++ b/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/SqlSugarForCore.nuspec @@ -2,7 +2,7 @@ sqlSugarCore - 4.6.0.9 + 4.6.1 sunkaixuan Landa http://www.apache.org/licenses/LICENSE-2.0.html diff --git a/Src/Asp.NetCore2/SqlSeverTest/SqliteTest/DataBase/SqlSugar4xTest.sqlite b/Src/Asp.NetCore2/SqlSeverTest/SqliteTest/DataBase/SqlSugar4xTest.sqlite index 88d6a78c3..f7b99b09a 100644 Binary files a/Src/Asp.NetCore2/SqlSeverTest/SqliteTest/DataBase/SqlSugar4xTest.sqlite and b/Src/Asp.NetCore2/SqlSeverTest/SqliteTest/DataBase/SqlSugar4xTest.sqlite differ