Update exp to sql

This commit is contained in:
sunkaixuan
2023-04-21 09:24:55 +08:00
parent 066e676ce5
commit 2435f0170c

View File

@@ -279,7 +279,7 @@ namespace SqlSugar
}
else
{
AppendModel(parameter, model, item,name);
AppendModel(parameter, model, item,name, args);
}
}
@@ -334,7 +334,7 @@ namespace SqlSugar
Check.Exception(true, "The SqlFunc.IIF(arg1,arg2,arg3) , {0} argument do not support ", item.ToString());
}
}
private void AppendModel(ExpressionParameter parameter, MethodCallExpressionModel model, Expression item,string name)
private void AppendModel(ExpressionParameter parameter, MethodCallExpressionModel model, Expression item,string name, IEnumerable<Expression> args)
{
parameter.CommonTempData = CommonTempDataType.Result;
base.Expression = item;
@@ -408,10 +408,19 @@ namespace SqlSugar
var parameterName = this.Context.SqlParameterKeyWord + ExpressionConst.MethodConst + this.Context.ParameterIndex;
this.Context.ParameterIndex++;
methodCallExpressionArgs.MemberName = parameterName;
if (name == "ToString"&&UtilMethods.GetUnderType(base.Expression.Type).IsEnum())
if (name == "ToString"&&UtilMethods.GetUnderType(base.Expression.Type).IsEnum())
{
value = value?.ToString();
}
else if (name == "ContainsArray"&&args.Count()==2&& value!= null && value is IList)
{
List<object> result = new List<object>();
foreach (var memItem in (value as IList))
{
result.Add(GetMemberValue(memItem, args.Last()));
}
value = result;
}
methodCallExpressionArgs.MemberValue = value;
this.Context.Parameters.Add(new SugarParameter(parameterName, value));
}