Update db.Updateable(objs).ReSetValue

This commit is contained in:
sunkaixuna 2021-12-18 20:51:39 +08:00
parent 35b7926944
commit b44a496c8b
4 changed files with 19 additions and 16 deletions

View File

@ -54,6 +54,8 @@ namespace OrmTest
var result5 = db.Updateable(updateObj).WhereColumns(it => new { it.Id }).ExecuteCommand();//update single by id var result5 = db.Updateable(updateObj).WhereColumns(it => new { it.Id }).ExecuteCommand();//update single by id
var result6 = db.Updateable(updateObjs).WhereColumns(it => new { it.Id }).ExecuteCommand();//update List<Class> by id var result6 = db.Updateable(updateObjs).WhereColumns(it => new { it.Id }).ExecuteCommand();//update List<Class> by id
//Re set value
var result66 = db.Updateable(new List<Order> { updateObj }).ReSetValue(it => it.Id = 112).IgnoreColumns(it => new { it.CreateTime, it.Price }).ExecuteCommand();

View File

@ -23,9 +23,9 @@ namespace OrmTest
Db.Updateable<UnitBoolTest>().SetColumns(it => it.BoolValue == x.BoolValue).Where(it => it.Id == 1).ExecuteCommand(); Db.Updateable<UnitBoolTest>().SetColumns(it => it.BoolValue == x.BoolValue).Where(it => it.Id == 1).ExecuteCommand();
Db.Updateable<UnitBoolTest>().SetColumns(it => new UnitBoolTest() { BoolValue = !x.BoolValue }).Where(it => it.Id == 1).ExecuteCommand(); Db.Updateable<UnitBoolTest>().SetColumns(it => new UnitBoolTest() { BoolValue = !x.BoolValue }).Where(it => it.Id == 1).ExecuteCommand();
Db.Updateable<UnitBoolTest>().SetColumns(it => it.BoolValue == !x.BoolValue).Where(it => it.Id == 1).ExecuteCommand(); Db.Updateable<UnitBoolTest>().SetColumns(it => it.BoolValue == !x.BoolValue).Where(it => it.Id == 1).ExecuteCommand();
Db.Updateable<UnitBoolTest>(x).ReSetValue(it => it.BoolValue == it.BoolValue).ExecuteCommand(); Db.Updateable<UnitBoolTest>(x).ReSetValue(it => it.BoolValue = it.BoolValue).ExecuteCommand();
Db.Updateable<UnitBoolTest>(x).ReSetValue(it => it.BoolValue == true).ExecuteCommand(); Db.Updateable<UnitBoolTest>(x).ReSetValue(it => it.BoolValue = true).ExecuteCommand();
Db.Updateable<UnitBoolTest>(x).ReSetValue(it => it.BoolValue == !it.BoolValue).ExecuteCommand(); Db.Updateable<UnitBoolTest>(x).ReSetValue(it => it.BoolValue = !it.BoolValue).ExecuteCommand();
Db.Updateable<UnitBoolTest>(x).UpdateColumns(it => new { it.BoolValue }).ExecuteCommand(); Db.Updateable<UnitBoolTest>(x).UpdateColumns(it => new { it.BoolValue }).ExecuteCommand();

View File

@ -181,19 +181,20 @@ namespace SqlSugar
} }
public IUpdateable<T> ReSetValue(Expression<Func<T, bool>> setValueExpression) public IUpdateable<T> ReSetValue(Action<T> setValueExpression)
{ {
Check.Exception(!IsSingle, "Batch operation not supported ReSetValue"); ThrowUpdateByExpression();
var expResult = UpdateBuilder.GetExpressionValue(setValueExpression, ResolveExpressType.WhereSingle); if (this.UpdateObjs.HasValue())
var resultString = Regex.Match(expResult.GetResultString(), @"\((.+)\)").Groups[1].Value; {
LambdaExpression lambda = setValueExpression as LambdaExpression; var oldColumns = this.UpdateBuilder.DbColumnInfoList.Select(it => it.PropertyName).ToList();
var expression = lambda.Body; foreach (var item in UpdateObjs)
Check.Exception(!(expression is BinaryExpression), "Expression format error"); {
Check.Exception((expression as BinaryExpression).NodeType != ExpressionType.Equal, "Expression format error"); setValueExpression(item);
var leftExpression = (expression as BinaryExpression).Left; }
Check.Exception(!(leftExpression is MemberExpression), "Expression format error"); this.UpdateBuilder.DbColumnInfoList = new List<DbColumnInfo>();
var leftResultString = UpdateBuilder.GetExpressionValue(leftExpression, ResolveExpressType.FieldSingle).GetString(); Init();
UpdateBuilder.SetValues.Add(new KeyValuePair<string, string>(leftResultString, resultString)); this.UpdateBuilder.DbColumnInfoList = this.UpdateBuilder.DbColumnInfoList.Where(it => oldColumns.Contains(it.PropertyName)).ToList();
}
return this; return this;
} }

View File

@ -86,7 +86,7 @@ namespace SqlSugar
IUpdateable<T> IsEnableUpdateVersionValidation(); IUpdateable<T> IsEnableUpdateVersionValidation();
IUpdateable<T> EnableDiffLogEvent(object businessData = null); IUpdateable<T> EnableDiffLogEvent(object businessData = null);
IUpdateable<T> ReSetValue(Expression<Func<T, bool>> setValueExpression); IUpdateable<T> ReSetValue(Action<T> setValueExpression);
IUpdateable<T> RemoveDataCache(); IUpdateable<T> RemoveDataCache();
IUpdateable<T> RemoveDataCache(string likeString); IUpdateable<T> RemoveDataCache(string likeString);
IUpdateable<T> CallEntityMethod(Expression<Action<T>> method); IUpdateable<T> CallEntityMethod(Expression<Action<T>> method);