Update exp to sql

This commit is contained in:
sunkaixuan
2025-09-05 15:33:34 +08:00
parent bf394b67bf
commit e49a45ea9a
3 changed files with 13 additions and 3 deletions

View File

@@ -40,8 +40,9 @@ namespace SqlSugar
#endregion
#region Get Mehtod
protected object GetMemberValue(object value, Expression exp)
protected object GetMemberValue(object value, Expression exp,out bool isConvert)
{
isConvert = false;
if (exp is MemberExpression)
{
var member = (exp as MemberExpression);
@@ -57,6 +58,7 @@ namespace SqlSugar
var obj = Activator.CreateInstance(type);
var p = ParameterConverter.Invoke(obj, new object[] { value, 100 + this.Context.ParameterIndex }) as SugarParameter;
value = p.Value;
isConvert = true;
}
}
}

View File

@@ -38,11 +38,19 @@ namespace SqlSugar
if (parameter.OppsiteExpression != null)
{
var exp = ExpressionTool.RemoveConvert(parameter.OppsiteExpression);
value = GetMemberValue(value, exp);
value = GetMemberValue(value, exp,out bool isConvert);
var valueFullName = value?.GetType()?.FullName;
if (valueFullName == "Microsoft.Extensions.Primitives.StringValues")
{
value = value.ToString();
}
if (isConvert && isSetTempData == false&& exp is MemberExpression m)
{
var p = new SugarParameter($"@{m.Member.Name}"+this.Context.ParameterIndex, value);
this.Context.ParameterIndex++;
this.Context.Parameters.Add(p);
AppendMember(parameter, isLeft, p.ParameterName);
return;
}
}
if (isSetTempData)

View File

@@ -516,7 +516,7 @@ namespace SqlSugar
List<object> result = new List<object>();
foreach (var memItem in (value as IList))
{
result.Add(GetMemberValue(memItem, args.Last()));
result.Add(GetMemberValue(memItem, args.Last(), out bool b));
}
value = result;
}