diff --git a/Src/Asp.Net/SqlSugar/Abstract/UpdateProvider/UpdateableProvider.cs b/Src/Asp.Net/SqlSugar/Abstract/UpdateProvider/UpdateableProvider.cs index c195a47eb..5aa45ef1a 100644 --- a/Src/Asp.Net/SqlSugar/Abstract/UpdateProvider/UpdateableProvider.cs +++ b/Src/Asp.Net/SqlSugar/Abstract/UpdateProvider/UpdateableProvider.cs @@ -73,6 +73,15 @@ namespace SqlSugar return this; } + public IUpdateable IgnoreColumns(bool ignoreAllNullColumns, bool isOffIdentity = false) + { + UpdateBuilder.IsOffIdentity = isOffIdentity; + if (this.UpdateBuilder.LambdaExpressions == null) + this.UpdateBuilder.LambdaExpressions = InstanceFactory.GetLambdaExpressions(this.Context.CurrentConnectionConfig); + this.UpdateBuilder.IsNoUpdateNull = ignoreAllNullColumns; + return this; + } + public IUpdateable IgnoreColumns(Expression> columns) { var ignoreColumns = UpdateBuilder.GetExpressionValue(columns, ResolveExpressType.ArraySingle).GetResultArray().Select(it => this.SqlBuilder.GetNoTranslationColumnName(it)).ToList(); @@ -180,6 +189,7 @@ namespace SqlSugar 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(); return this; } + [Obsolete("Use IUpdateable IgnoreColumns(bool ignoreAllNullColumns, bool isOffIdentity = false);")] public IUpdateable Where(bool isUpdateNull, bool IsOffIdentity = false) { diff --git a/Src/Asp.Net/SqlSugar/Interface/IUpdateable.cs b/Src/Asp.Net/SqlSugar/Interface/IUpdateable.cs index 1a31c9292..8131fdd02 100644 --- a/Src/Asp.Net/SqlSugar/Interface/IUpdateable.cs +++ b/Src/Asp.Net/SqlSugar/Interface/IUpdateable.cs @@ -16,6 +16,7 @@ namespace SqlSugar Task ExecuteCommandHasChangeAsync(); IUpdateable AS(string tableName); IUpdateable With(string lockString); + [Obsolete("Use IUpdateable IgnoreColumns(bool ignoreAllNullColumns, bool isOffIdentity = false);")] IUpdateable Where(bool isNoUpdateNull,bool IsOffIdentity = false); IUpdateable Where(Expression> expression); IUpdateable Where(string whereSql,object parameters=null); @@ -37,6 +38,7 @@ namespace SqlSugar IUpdateable UpdateColumns(Expression> columns); IUpdateable UpdateColumns(Func updateColumMethod); IUpdateable UpdateColumns(Expression> columns); + IUpdateable IgnoreColumns(bool ignoreAllNullColumns, bool isOffIdentity = false); IUpdateable IgnoreColumns(Expression> columns); IUpdateable IgnoreColumns(Func ignoreColumMethod); IUpdateable ReSetValue(Expression> setValueExpression); diff --git a/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Abstract/SqlBuilderProvider/InsertBuilder.cs b/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Abstract/SqlBuilderProvider/InsertBuilder.cs index 31c0623f2..c1efa0074 100644 --- a/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Abstract/SqlBuilderProvider/InsertBuilder.cs +++ b/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Abstract/SqlBuilderProvider/InsertBuilder.cs @@ -169,7 +169,7 @@ namespace SqlSugar } else if (type == UtilConstants.ByteArrayType) { - string bytesString = "0x" + BitConverter.ToString((byte[])value); + string bytesString = "0x" + BitConverter.ToString((byte[])value).Replace("-", ""); return bytesString; } else if (type.IsEnum()) diff --git a/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Abstract/SqlBuilderProvider/UpdateBuilder.cs b/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Abstract/SqlBuilderProvider/UpdateBuilder.cs index bde46d1cc..3410be6ca 100644 --- a/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Abstract/SqlBuilderProvider/UpdateBuilder.cs +++ b/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Abstract/SqlBuilderProvider/UpdateBuilder.cs @@ -262,7 +262,7 @@ namespace SqlSugar } else if (type == UtilConstants.ByteArrayType) { - string bytesString = "0x" + BitConverter.ToString((byte[])value); + string bytesString = "0x" + BitConverter.ToString((byte[])value).Replace("-", ""); return bytesString; } else if (type.IsEnum()) diff --git a/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Abstract/UpdateProvider/UpdateableProvider.cs b/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Abstract/UpdateProvider/UpdateableProvider.cs index e18f31196..10470c65f 100644 --- a/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Abstract/UpdateProvider/UpdateableProvider.cs +++ b/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Abstract/UpdateProvider/UpdateableProvider.cs @@ -67,22 +67,21 @@ namespace SqlSugar this.Context.MappingTables.Add(entityName, tableName); return this; ; } - - public IUpdateable IgnoreColumns(bool IgnoreAllNullColumns, bool IsOffIdentity = false) - { - UpdateBuilder.IsOffIdentity = IsOffIdentity; - if (this.UpdateBuilder.LambdaExpressions == null) - this.UpdateBuilder.LambdaExpressions = InstanceFactory.GetLambdaExpressions(this.Context.CurrentConnectionConfig); - this.UpdateBuilder.IsNoUpdateNull = IgnoreAllNullColumns; - return this; - } - public IUpdateable IgnoreColumns(Func ignoreColumMethod) { this.UpdateBuilder.DbColumnInfoList = this.UpdateBuilder.DbColumnInfoList.Where(it => !ignoreColumMethod(it.PropertyName)).ToList(); return this; } + public IUpdateable IgnoreColumns(bool ignoreAllNullColumns, bool isOffIdentity = false) + { + UpdateBuilder.IsOffIdentity = isOffIdentity; + if (this.UpdateBuilder.LambdaExpressions == null) + this.UpdateBuilder.LambdaExpressions = InstanceFactory.GetLambdaExpressions(this.Context.CurrentConnectionConfig); + this.UpdateBuilder.IsNoUpdateNull = ignoreAllNullColumns; + return this; + } + public IUpdateable IgnoreColumns(Expression> columns) { var ignoreColumns = UpdateBuilder.GetExpressionValue(columns, ResolveExpressType.ArraySingle).GetResultArray().Select(it => this.SqlBuilder.GetNoTranslationColumnName(it)).ToList(); @@ -108,7 +107,7 @@ namespace SqlSugar { var moreSetts = this.Context.CurrentConnectionConfig.MoreSettings; var extService = this.Context.CurrentConnectionConfig.ConfigureExternalServices; - if (moreSetts != null && moreSetts.IsAutoRemoveDataCache && extService!=null&& extService.DataInfoCacheService!=null) + if (moreSetts != null && moreSetts.IsAutoRemoveDataCache && extService != null && extService.DataInfoCacheService != null) { this.RemoveDataCache(); } @@ -148,12 +147,13 @@ namespace SqlSugar return this; } - public IUpdateable UpdateColumns(Expression> columns) { + public IUpdateable UpdateColumns(Expression> columns) + { var binaryExp = columns.Body as BinaryExpression; Check.Exception(!binaryExp.NodeType.IsIn(ExpressionType.Equal), "No support {0}", columns.ToString()); - Check.Exception(!(binaryExp.Left is MemberExpression)&& !(binaryExp.Left is UnaryExpression), "No support {0}", columns.ToString()); + Check.Exception(!(binaryExp.Left is MemberExpression) && !(binaryExp.Left is UnaryExpression), "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().Replace("))",") )").Replace("((", "( (").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(); @@ -187,11 +187,11 @@ namespace SqlSugar UpdateBuilder.SetValues.Add(new KeyValuePair(SqlBuilder.GetTranslationColumnName(key), item)); } } - 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(); + 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(); return this; } + [Obsolete("Use IUpdateable IgnoreColumns(bool ignoreAllNullColumns, bool isOffIdentity = false);")] - [Obsolete] public IUpdateable Where(bool isUpdateNull, bool IsOffIdentity = false) { UpdateBuilder.IsOffIdentity = IsOffIdentity; @@ -200,7 +200,6 @@ namespace SqlSugar this.UpdateBuilder.IsNoUpdateNull = isUpdateNull; return this; } - public IUpdateable Where(Expression> expression) { var expResult = UpdateBuilder.GetExpressionValue(expression, ResolveExpressType.WhereSingle); @@ -210,20 +209,22 @@ namespace SqlSugar public IUpdateable Where(string whereSql, object parameters = null) { - if (whereSql.HasValue()) { + if (whereSql.HasValue()) + { UpdateBuilder.WhereValues.Add(whereSql); } - if (parameters != null) { + if (parameters != null) + { UpdateBuilder.Parameters.AddRange(Context.Ado.GetParameters(parameters)); } return this; } - public IUpdateable Where(string fieldName,string conditionalType, object fieldValue) + public IUpdateable Where(string fieldName, string conditionalType, object fieldValue) { - var whereSql=this.SqlBuilder.GetWhere(fieldName, conditionalType,0); + var whereSql = this.SqlBuilder.GetWhere(fieldName, conditionalType, 0); this.Where(whereSql); - string parameterName = this.SqlBuilder.SqlParameterKeyWord + fieldName+ "0"; + string parameterName = this.SqlBuilder.SqlParameterKeyWord + fieldName + "0"; this.UpdateBuilder.Parameters.Add(new SugarParameter(parameterName, fieldValue)); return this; } @@ -258,7 +259,7 @@ namespace SqlSugar foreach (var item in UpdateObjs) { List updateItem = new List(); - var isDic = item is Dictionary; + var isDic = item is Dictionary; if (isDic) { SetUpdateItemByDic(i, item, updateItem); @@ -272,12 +273,12 @@ namespace SqlSugar } private void SetUpdateItemByDic(int i, T item, List updateItem) { - foreach (var column in item as Dictionary) + foreach (var column in item as Dictionary) { var columnInfo = new DbColumnInfo() { Value = column.Value, - DbColumnName =column.Key, + DbColumnName = column.Key, PropertyName = column.Key, PropertyType = UtilMethods.GetUnderType(column.Value.GetType()), TableId = i @@ -294,6 +295,7 @@ namespace SqlSugar { foreach (var column in EntityInfo.Columns) { + if (column.IsIgnore) continue; var columnInfo = new DbColumnInfo() { Value = column.PropertyInfo.GetValue(item, null), @@ -329,7 +331,8 @@ namespace SqlSugar foreach (var item in this.UpdateBuilder.DbColumnInfoList) { if (this.UpdateBuilder.Parameters == null) this.UpdateBuilder.Parameters = new List(); - if (this.UpdateBuilder.SetValues.Any(it =>this.SqlBuilder.GetNoTranslationColumnName(it.Key) == item.PropertyName)) { + if (this.UpdateBuilder.SetValues.Any(it => this.SqlBuilder.GetNoTranslationColumnName(it.Key) == item.PropertyName)) + { continue; } this.UpdateBuilder.Parameters.Add(new SugarParameter(this.SqlBuilder.SqlParameterKeyWord + item.DbColumnName, item.Value, item.PropertyType)); diff --git a/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/ExpressionsToSql/Subquery/Items/SubWhere.cs b/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/ExpressionsToSql/Subquery/Items/SubWhere.cs index 52a468d40..5c0e77fc7 100644 --- a/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/ExpressionsToSql/Subquery/Items/SubWhere.cs +++ b/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/ExpressionsToSql/Subquery/Items/SubWhere.cs @@ -40,7 +40,7 @@ namespace SqlSugar { var exp = expression as MethodCallExpression; var argExp= exp.Arguments[0]; - var result= "WHERE "+SubTools.GetMethodValue(Context, argExp, ResolveExpressType.WhereMultiple); + var result= "WHERE "+SubTools.GetMethodValue(Context, argExp, ResolveExpressType.WhereMultiple);; var selfParameterName = Context.GetTranslationColumnName((argExp as LambdaExpression).Parameters.First().Name)+UtilConstants.Dot; result = result.Replace(selfParameterName,string.Empty); return result; diff --git a/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Infrastructure/ContextMethods.cs b/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Infrastructure/ContextMethods.cs index 3214de044..b6f7e7648 100644 --- a/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Infrastructure/ContextMethods.cs +++ b/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Infrastructure/ContextMethods.cs @@ -278,6 +278,7 @@ namespace SqlSugar newClient.Ado.LogEventStarting = Context.Ado.LogEventStarting; newClient.Ado.LogEventCompleted = Context.Ado.LogEventCompleted; newClient.Ado.ProcessingEventStartingSQL = Context.Ado.ProcessingEventStartingSQL; + newClient.QueryFilter = Context.QueryFilter; } return newClient; } diff --git a/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Infrastructure/SqlSugarAccessory.cs b/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Infrastructure/SqlSugarAccessory.cs index b6b55cad0..d2ea61dbd 100644 --- a/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Infrastructure/SqlSugarAccessory.cs +++ b/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Infrastructure/SqlSugarAccessory.cs @@ -14,7 +14,7 @@ namespace SqlSugar { get { - var result = _Context; + var result = _Context; ; if (CurrentConnectionConfig.IsShardSameThread) { if (CallContext.ContextList.Value.IsNullOrEmpty()) @@ -268,7 +268,7 @@ namespace SqlSugar protected InsertableProvider CreateInsertable(T[] insertObjs) where T : class, new() { var result = InstanceFactory.GetInsertableProvider(this.CurrentConnectionConfig); - var sqlBuilder = InstanceFactory.GetSqlbuilder(this.CurrentConnectionConfig); + var sqlBuilder = InstanceFactory.GetSqlbuilder(this.CurrentConnectionConfig); ; result.Context = this.Context; result.EntityInfo = this.Context.EntityMaintenance.GetEntityInfo(); result.SqlBuilder = sqlBuilder; @@ -283,7 +283,7 @@ namespace SqlSugar protected DeleteableProvider CreateDeleteable() where T : class, new() { var result = InstanceFactory.GetDeleteableProvider(this.CurrentConnectionConfig); - var sqlBuilder = InstanceFactory.GetSqlbuilder(this.CurrentConnectionConfig); + var sqlBuilder = InstanceFactory.GetSqlbuilder(this.CurrentConnectionConfig); ; result.Context = this.Context; result.SqlBuilder = sqlBuilder; sqlBuilder.DeleteBuilder = result.DeleteBuilder = InstanceFactory.GetDeleteBuilder(this.CurrentConnectionConfig); @@ -295,7 +295,7 @@ namespace SqlSugar protected UpdateableProvider CreateUpdateable(T[] UpdateObjs) where T : class, new() { var result = InstanceFactory.GetUpdateableProvider(this.CurrentConnectionConfig); - var sqlBuilder = InstanceFactory.GetSqlbuilder(this.CurrentConnectionConfig); + var sqlBuilder = InstanceFactory.GetSqlbuilder(this.CurrentConnectionConfig); ; result.Context = this.Context; result.EntityInfo = this.Context.EntityMaintenance.GetEntityInfo(); result.SqlBuilder = sqlBuilder; @@ -400,7 +400,7 @@ namespace SqlSugar result.Add(joinValue); } } - return result.ToArray(); + return result.ToArray(); ; } protected Dictionary GetEasyJoinInfo(Expression joinExpression, ref string shortName, ISqlBuilder builder, params Type[] entityTypeArray) diff --git a/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Interface/IUpdateable.cs b/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Interface/IUpdateable.cs index 9335a616f..8131fdd02 100644 --- a/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Interface/IUpdateable.cs +++ b/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Interface/IUpdateable.cs @@ -16,7 +16,7 @@ namespace SqlSugar Task ExecuteCommandHasChangeAsync(); IUpdateable AS(string tableName); IUpdateable With(string lockString); - [Obsolete] + [Obsolete("Use IUpdateable IgnoreColumns(bool ignoreAllNullColumns, bool isOffIdentity = false);")] IUpdateable Where(bool isNoUpdateNull,bool IsOffIdentity = false); IUpdateable Where(Expression> expression); IUpdateable Where(string whereSql,object parameters=null); @@ -33,12 +33,12 @@ namespace SqlSugar /// /// /// - IUpdateable IgnoreColumns(bool IgnoreAllNullColumns, bool IsOffIdentity = false); IUpdateable WhereColumns(Expression> columns); IUpdateable UpdateColumns(Expression> columns); IUpdateable UpdateColumns(Expression> columns); IUpdateable UpdateColumns(Func updateColumMethod); IUpdateable UpdateColumns(Expression> columns); + IUpdateable IgnoreColumns(bool ignoreAllNullColumns, bool isOffIdentity = false); IUpdateable IgnoreColumns(Expression> columns); IUpdateable IgnoreColumns(Func ignoreColumMethod); IUpdateable ReSetValue(Expression> setValueExpression);