mirror of
https://gitee.com/dotnetchina/SqlSugar.git
synced 2025-11-07 18:04:55 +08:00
Update merge
This commit is contained in:
@@ -246,18 +246,14 @@ namespace SqlSugar
|
||||
}
|
||||
|
||||
public async Task<int> BulkMergeAsync(List<T> datas, Expression<Func<T, object>> whereColumnsExp, Expression<Func<T, object>> updateColumnsExp)
|
||||
{
|
||||
// 步骤:
|
||||
// 1. 通过表达式获取 whereColumns 和 updateColumns 的列名数组
|
||||
// 2. 调用已有的 BulkMergeAsync(List<T>, string[], string[]) 方法
|
||||
|
||||
{
|
||||
// 1. 获取 whereColumns
|
||||
var whereColumns =ExpressionTool.GetNewArrayMembers((whereColumnsExp as LambdaExpression).Body as NewArrayExpression);
|
||||
var whereColumns =ExpressionTool.GetNewExpressionItemListNew((whereColumnsExp as LambdaExpression).Body).Select(it=>it.Key).ToArray();
|
||||
// 2. 获取 updateColumns
|
||||
var updateColumns = ExpressionTool.GetNewArrayMembers((updateColumnsExp as LambdaExpression).Body as NewArrayExpression);
|
||||
var updateColumns = ExpressionTool.GetNewExpressionItemListNew((updateColumnsExp as LambdaExpression).Body).Select(it => it.Key).ToArray();
|
||||
|
||||
// 3. 调用 BulkMergeAsync
|
||||
return await BulkMergeAsync(datas, whereColumns?.ToArray(), updateColumns?.ToArray());
|
||||
return await BulkMergeAsync(datas, whereColumns, updateColumns);
|
||||
}
|
||||
public int BulkMerge(List<T> datas, Expression<Func<T, object>> whereColumnsExp, Expression<Func<T, object>> updateColumnsExp)
|
||||
{
|
||||
|
||||
@@ -303,7 +303,19 @@ namespace SqlSugar
|
||||
GetTopLevelMethodCalls(lambdaExpression.Body, methodCalls);
|
||||
}
|
||||
}
|
||||
|
||||
public static Dictionary<string, Expression> GetNewExpressionItemListNew(Expression lamExp)
|
||||
{
|
||||
var caseExp = GetLambdaExpressionBody(lamExp);
|
||||
caseExp = ExpressionTool.RemoveConvert(lamExp);
|
||||
if (caseExp is MemberExpression c)
|
||||
{
|
||||
return new Dictionary<string, Expression>() { { c.Member.Name, c } };
|
||||
}
|
||||
else
|
||||
{
|
||||
return GetNewExpressionItemList(lamExp);
|
||||
}
|
||||
}
|
||||
public static Dictionary<string, Expression> GetNewExpressionItemList(Expression lamExp)
|
||||
{
|
||||
var caseExp = GetLambdaExpressionBody(lamExp);
|
||||
|
||||
Reference in New Issue
Block a user