diff --git a/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Abstract/SaveableProvider/SaveableProvider.cs b/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Abstract/SaveableProvider/SaveableProvider.cs index 3e0cce760..0c8de76a3 100644 --- a/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Abstract/SaveableProvider/SaveableProvider.cs +++ b/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Abstract/SaveableProvider/SaveableProvider.cs @@ -120,6 +120,20 @@ namespace SqlSugar return this; } + public ISaveable EnableDiffLogEvent(object businessData = null) + { + LoadInsertable(); + if (this.insertable != null) + { + this.insertable.EnableDiffLogEvent(businessData); + } + if (this.updateable != null) + { + this.updateable.EnableDiffLogEvent(businessData); + } + return this; + } + public ISaveable InsertIgnoreColumns(Expression> columns) { LoadInsertable(); diff --git a/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Abstract/UpdateProvider/UpdateableProvider.cs b/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Abstract/UpdateProvider/UpdateableProvider.cs index 80e0bbb07..e9ac54acc 100644 --- a/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Abstract/UpdateProvider/UpdateableProvider.cs +++ b/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Abstract/UpdateProvider/UpdateableProvider.cs @@ -211,6 +211,12 @@ namespace SqlSugar return this; } + public IUpdateable UpdateColumns(string[] columns) + { + this.UpdateBuilder.DbColumnInfoList = this.UpdateBuilder.DbColumnInfoList.Where(it => columns.Contains(it.PropertyName, StringComparer.OrdinalIgnoreCase)).ToList(); + return this; + } + public IUpdateable UpdateColumns(Func updateColumMethod) { List primaryKeys = GetPrimaryKeys(); diff --git a/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/ExpressionsToSql/ResolveItems/NewArrayExpessionResolve.cs b/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/ExpressionsToSql/ResolveItems/NewArrayExpessionResolve.cs index 5d640113c..2ad08a93c 100644 --- a/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/ExpressionsToSql/ResolveItems/NewArrayExpessionResolve.cs +++ b/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/ExpressionsToSql/ResolveItems/NewArrayExpessionResolve.cs @@ -20,7 +20,51 @@ namespace SqlSugar case ResolveExpressType.SelectMultiple: case ResolveExpressType.FieldSingle: case ResolveExpressType.FieldMultiple: - Check.ThrowNotSupportedException("NewArrayExpression"); + try + { + var value = ExpressionTool.DynamicInvoke(expression); + var isLeft = parameter.IsLeft; + var baseParameter = parameter.BaseParameter; + var isSetTempData = baseParameter.CommonTempData.HasValue() && baseParameter.CommonTempData.Equals(CommonTempDataType.Result); + if (isSetTempData) + { + baseParameter.CommonTempData = value; + } + else + { + var parentIsBinary = parameter.BaseParameter.CurrentExpression is BinaryExpression; + var parentIsRoot = parameter.BaseParameter.CurrentExpression is LambdaExpression; + var isBool = value != null && value.GetType() == UtilConstants.BoolType; + if (parentIsRoot && isBool) + { + this.Context.Result.Append(value.ObjToBool() ? this.Context.DbMehtods.True() : this.Context.DbMehtods.False()); + break; + } + if (parentIsBinary && isBool) + { + var isLogicOperator = + parameter.BaseExpression.NodeType == ExpressionType.And || + parameter.BaseExpression.NodeType == ExpressionType.AndAlso || + parameter.BaseExpression.NodeType == ExpressionType.Or || + parameter.BaseExpression.NodeType == ExpressionType.OrElse; + if (isLogicOperator) + { + AppendMember(parameter, isLeft, (value.ObjToBool() ? this.Context.DbMehtods.True() : this.Context.DbMehtods.False())); + break; + } + } + if (value == null && parentIsBinary) + { + parameter.BaseParameter.ValueIsNull = true; + value = this.Context.DbMehtods.Null(); + } + AppendValue(parameter, isLeft, value); + } + } + catch (Exception) + { + Check.ThrowNotSupportedException("NewArrayExpression"); + } break; case ResolveExpressType.ArraySingle: foreach (var item in expression.Expressions) diff --git a/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Interface/ISaveable.cs b/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Interface/ISaveable.cs index 86b5b2291..bedaa7fc7 100644 --- a/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Interface/ISaveable.cs +++ b/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Interface/ISaveable.cs @@ -15,5 +15,6 @@ namespace SqlSugar ISaveable InsertIgnoreColumns(Expression> columns); ISaveable UpdateColumns(Expression> columns); ISaveable UpdateIgnoreColumns(Expression> columns); + ISaveable EnableDiffLogEvent(object businessData = null); } } diff --git a/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Interface/IUpdateable.cs b/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Interface/IUpdateable.cs index 72efe9a52..51f187246 100644 --- a/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Interface/IUpdateable.cs +++ b/Src/Asp.NetCore2/SqlSeverTest/SqlSugar/Interface/IUpdateable.cs @@ -41,6 +41,7 @@ namespace SqlSugar IUpdateable UpdateColumns(Expression> columns); IUpdateable UpdateColumns(Expression> columns); IUpdateable UpdateColumns(Func updateColumMethod); + IUpdateable UpdateColumns(string[] columns); IUpdateable UpdateColumns(Expression> columns); IUpdateable UpdateColumnsIF(bool isUpdateColumns,Expression> columns); IUpdateable UpdateColumnsIF(bool isUpdateColumns,Expression> columns);