Update : Update UseParameter

This commit is contained in:
sunkaixuan
2024-04-17 14:49:43 +08:00
parent 8ac11ead1d
commit 91c757bbdf

View File

@@ -20,36 +20,53 @@ namespace SqlSugar
{
List<SugarParameter> allParamter = new List<SugarParameter>();
var sql=GetSql(item);
Context.Ado.ExecuteCommand(sql.Key, sql.Value);
result+=Context.Ado.ExecuteCommand(sql.Key, sql.Value);
});
return result;
return result<0?count:result;
}
public KeyValuePair<string, SugarParameter[]> GetSql(List<T> updateObjects)
public async Task<int> ExecuteCommandAsync()
{
var result = 0;
var list = Updateable.UpdateObjs;
var count = list.Length;
var size = GetPageSize(20, count);
await Context.Utilities.PageEachAsync(list.ToList(), size,async item =>
{
List<SugarParameter> allParamter = new List<SugarParameter>();
var sql = GetSql(item);
result +=await Context.Ado.ExecuteCommandAsync(sql.Key, sql.Value);
});
return result < 0 ? count : result;
}
#region Values Helper
public KeyValuePair<string, SugarParameter[]> GetSql(List<T> updateObjects)
{
var inserable = Updateable as UpdateableProvider<T>;
var builder = inserable.UpdateBuilder.Builder;
var columns = inserable.UpdateBuilder.DbColumnInfoList.GroupBy(it => it.DbColumnName).Select(it => it.Key).Distinct().ToList();
var tableWithString = builder.GetTranslationColumnName(inserable.UpdateBuilder.TableName);
var wheres=inserable.WhereColumnList ?? inserable.UpdateBuilder.PrimaryKeys;
var tableWithString = builder.GetTranslationColumnName(inserable.UpdateBuilder.TableName);
var wheres = inserable.WhereColumnList ?? inserable.UpdateBuilder.PrimaryKeys;
if (wheres == null)
{
wheres = inserable.UpdateBuilder.DbColumnInfoList
.Where(it => it.IsPrimarykey).Select(it=>it.DbColumnName).Distinct().ToList();
.Where(it => it.IsPrimarykey).Select(it => it.DbColumnName).Distinct().ToList();
}
StringBuilder sbAllSql = new StringBuilder();
var sqlTemp =( $" UPDATE {tableWithString} SET {{0}} WHERE {{1}};\r\n");
var sqlTemp = ($" UPDATE {tableWithString} SET {{0}} WHERE {{1}};\r\n");
List<SugarParameter> parameters = new List<SugarParameter>();
Check.ExceptionEasy(wheres?.Any() != true, "Updates cannot be without a primary key or condition", "更新不能没有主键或者条件");
foreach (var item in this.Context.Updateable(updateObjects).UpdateBuilder.DbColumnInfoList.GroupBy(it=>it.TableId))
foreach (var item in this.Context.Updateable(updateObjects).UpdateBuilder.DbColumnInfoList.GroupBy(it => it.TableId))
{
Check.ExceptionEasy(item?.ToList()?.Any() != true, "Set has no columns", "更新Set没有列");
StringBuilder setString = new StringBuilder();
foreach (var setItem in item.ToList())
{
if (setItem.IsPrimarykey) { continue; }
if (Updateable.UpdateBuilder.UpdateColumns?.Any() == true)
if (Updateable.UpdateBuilder.UpdateColumns?.Any() == true)
{
if (!Updateable.UpdateBuilder.UpdateColumns.Any(it=>it.EqualCase(setItem.DbColumnName)))
if (!Updateable.UpdateBuilder.UpdateColumns.Any(it => it.EqualCase(setItem.DbColumnName)))
{
continue;
}
@@ -61,9 +78,9 @@ namespace SqlSugar
continue;
}
}
var paraterName= FormatValue(setItem.PropertyType, setItem.DbColumnName, setItem.Value, parameters);
setString.Append($" {setItem.DbColumnName} = {paraterName} ,");
}
var paraterName = FormatValue(setItem.PropertyType, setItem.DbColumnName, setItem.Value, parameters);
setString.Append($" {builder.GetTranslationColumnName(setItem.DbColumnName)} = {paraterName} ,");
}
StringBuilder whereString = new StringBuilder();
foreach (var whereItem in wheres)
{
@@ -71,17 +88,12 @@ namespace SqlSugar
var paraterName = FormatValue(pk.PropertyType, pk.DbColumnName, pk.Value, parameters);
whereString.Append($" {pk.DbColumnName} = {paraterName} ,");
}
var builderItem = string.Format(sqlTemp,setString.ToString().TrimEnd(','), whereString.ToString().TrimEnd(','));
var builderItem = string.Format(sqlTemp, setString.ToString().TrimEnd(','), whereString.ToString().TrimEnd(','));
sbAllSql.Append(builderItem);
}
builder.FormatSaveQueueSql(sbAllSql);
return new KeyValuePair<string, SugarParameter[]>(sbAllSql.ToString(), parameters.ToArray());
}
public async Task<int> ExecuteCommandAsync()
{
throw new Exception("");
}
#region Values Helper
private int GetPageSize(int pageSize, int count)
{