mirror of
https://gitee.com/dotnetchina/SqlSugar.git
synced 2025-10-15 18:55:07 +08:00
Supporting multiple setColumns
This commit is contained in:
@@ -76,6 +76,23 @@ namespace OrmTest
|
|||||||
}).Where(it => it.id == 1).ToSql();
|
}).Where(it => it.id == 1).ToSql();
|
||||||
UValidate.Check(sql.Key, @"UPDATE [NullTest] SET
|
UValidate.Check(sql.Key, @"UPDATE [NullTest] SET
|
||||||
[p2] = @Const0 WHERE ( [id] = @id1 )", "Updateable");
|
[p2] = @Const0 WHERE ( [id] = @id1 )", "Updateable");
|
||||||
|
|
||||||
|
|
||||||
|
Db.Updateable<Order>()
|
||||||
|
.SetColumns(it => it.Name == "a")
|
||||||
|
.SetColumns(it => it.CreateTime == DateTime.Now)
|
||||||
|
.SetColumns(it=>it.Price==1).Where(it=>it.Id==1).ExecuteCommand();
|
||||||
|
|
||||||
|
|
||||||
|
Db.Updateable<Order>()
|
||||||
|
.SetColumns(it =>new Order{ Name="a",CreateTime=DateTime.Now })
|
||||||
|
.SetColumns(it => it.Price==1).Where(it => it.Id == 1).ExecuteCommand();
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Db.Updateable<Order>()
|
||||||
|
.SetColumns(it => new Order { Name = "a", CreateTime = DateTime.Now })
|
||||||
|
.SetColumns(it => new Order() { Price=1 }).Where(it => it.Id == 1).ExecuteCommand();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
public class NullTest
|
public class NullTest
|
||||||
|
@@ -33,6 +33,7 @@ namespace SqlSugar
|
|||||||
public bool IsEnableDiffLogEvent { get; set; }
|
public bool IsEnableDiffLogEvent { get; set; }
|
||||||
public DiffLogModel diffModel { get; set; }
|
public DiffLogModel diffModel { get; set; }
|
||||||
private Action RemoveCacheFunc { get; set; }
|
private Action RemoveCacheFunc { get; set; }
|
||||||
|
private int SetColumnsIndex { get; set; }
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
#region Core
|
#region Core
|
||||||
@@ -230,6 +231,7 @@ namespace SqlSugar
|
|||||||
}
|
}
|
||||||
this.UpdateBuilder.DbColumnInfoList = UpdateBuilder.DbColumnInfoList.Where(it => (UpdateParameterIsNull==false&&IsPrimaryKey(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 = UpdateBuilder.DbColumnInfoList.Where(it => (UpdateParameterIsNull==false&&IsPrimaryKey(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();
|
||||||
CheckTranscodeing();
|
CheckTranscodeing();
|
||||||
|
AppendSets();
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -244,10 +246,10 @@ namespace SqlSugar
|
|||||||
string key = SqlBuilder.GetNoTranslationColumnName(expResult);
|
string key = SqlBuilder.GetNoTranslationColumnName(expResult);
|
||||||
UpdateBuilder.SetValues.Add(new KeyValuePair<string, string>(SqlBuilder.GetTranslationColumnName(key), expResult));
|
UpdateBuilder.SetValues.Add(new KeyValuePair<string, string>(SqlBuilder.GetTranslationColumnName(key), expResult));
|
||||||
this.UpdateBuilder.DbColumnInfoList = this.UpdateBuilder.DbColumnInfoList.Where(it => (UpdateParameterIsNull == false && IsPrimaryKey(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 => (UpdateParameterIsNull == false && IsPrimaryKey(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();
|
||||||
|
AppendSets();
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public IUpdateable<T> UpdateColumnsIF(bool isUpdateColumns, Expression<Func<T, object>> columns)
|
public IUpdateable<T> UpdateColumnsIF(bool isUpdateColumns, Expression<Func<T, object>> columns)
|
||||||
{
|
{
|
||||||
if (isUpdateColumns)
|
if (isUpdateColumns)
|
||||||
@@ -372,6 +374,17 @@ namespace SqlSugar
|
|||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
#region Helper
|
#region Helper
|
||||||
|
private void AppendSets()
|
||||||
|
{
|
||||||
|
if (SetColumnsIndex > 0)
|
||||||
|
{
|
||||||
|
var keys = UpdateBuilder.SetValues.Select(it => SqlBuilder.GetNoTranslationColumnName(it.Key.ToLower())).ToList();
|
||||||
|
var addKeys = keys.Where(k => !this.UpdateBuilder.DbColumnInfoList.Any(it => it.PropertyName.ToLower() == k || it.DbColumnName.ToLower() == k)).ToList();
|
||||||
|
var addItems = this.EntityInfo.Columns.Where(it =>!GetPrimaryKeys().Any(p=>p.ToLower()==it.PropertyName?.ToLower()|| p.ToLower() == it.DbColumnName?.ToLower()) && addKeys.Any(k => it.PropertyName?.ToLower() == k || it.DbColumnName?.ToLower() == k)).ToList();
|
||||||
|
this.UpdateBuilder.DbColumnInfoList.AddRange(addItems.Select(it => new DbColumnInfo() { PropertyName = it.PropertyName, DbColumnName = it.DbColumnName }));
|
||||||
|
}
|
||||||
|
SetColumnsIndex++;
|
||||||
|
}
|
||||||
private string _ExecuteCommand()
|
private string _ExecuteCommand()
|
||||||
{
|
{
|
||||||
PreToSql();
|
PreToSql();
|
||||||
|
Reference in New Issue
Block a user