diff --git a/Src/Asp.NetCore2/SqlSugar/Abstract/UpdateProvider/SplitTableUpdateByObjectProvider.cs b/Src/Asp.NetCore2/SqlSugar/Abstract/UpdateProvider/SplitTableUpdateByObjectProvider.cs index 1976ca5b5..02ee872c4 100644 --- a/Src/Asp.NetCore2/SqlSugar/Abstract/UpdateProvider/SplitTableUpdateByObjectProvider.cs +++ b/Src/Asp.NetCore2/SqlSugar/Abstract/UpdateProvider/SplitTableUpdateByObjectProvider.cs @@ -15,7 +15,21 @@ namespace SqlSugar public T[] UpdateObjects { get; set; } public IEnumerable Tables { get; set; } - + public int ExecuteCommandWithOptLock(bool isThrowError = false) + { + List groupModels; + int result; + GroupDataList(UpdateObjects, out groupModels, out result); + foreach (var item in groupModels.GroupBy(it => it.GroupName)) + { + var addList = item.Select(it => it.Item).ToList(); + result += this.Context.Updateable(addList) + .UpdateColumns(updateobj.UpdateBuilder.UpdateColumns?.ToArray()) + .IgnoreColumns(this.updateobj.UpdateBuilder.IsNoUpdateNull, this.updateobj.UpdateBuilder.IsOffIdentity, this.updateobj.UpdateBuilder.IsNoUpdateDefaultValue) + .IgnoreColumns(GetIgnoreColumns()).AS(item.Key).ExecuteCommandWithOptLock(isThrowError); + } + return result; + } public int ExecuteCommand() { List groupModels; @@ -48,6 +62,21 @@ namespace SqlSugar } return result; } + public async Task ExecuteCommandWithOptLockAsync(bool isThrowError = false) + { + List groupModels; + int result; + GroupDataList(UpdateObjects, out groupModels, out result); + foreach (var item in groupModels.GroupBy(it => it.GroupName)) + { + var addList = item.Select(it => it.Item).ToList(); + result += await this.Context.Updateable(addList) + .UpdateColumns(updateobj.UpdateBuilder.UpdateColumns?.ToArray()) + .IgnoreColumns(this.updateobj.UpdateBuilder.IsNoUpdateNull, this.updateobj.UpdateBuilder.IsOffIdentity, this.updateobj.UpdateBuilder.IsNoUpdateDefaultValue) + .IgnoreColumns(GetIgnoreColumns()).AS(item.Key).ExecuteCommandWithOptLockAsync(isThrowError); + } + return result; + } private string [] GetIgnoreColumns() { if (this.updateobj.UpdateBuilder.DbColumnInfoList.Any())