mirror of
https://gitee.com/dotnetchina/SqlSugar.git
synced 2025-07-15 23:13:42 +08:00
Update exp to sql
This commit is contained in:
parent
18c6c23678
commit
1b479e1788
@ -10,7 +10,24 @@ namespace SqlSugar
|
|||||||
{
|
{
|
||||||
public class ExpressionTool
|
public class ExpressionTool
|
||||||
{
|
{
|
||||||
|
internal static string ResolveMemberValue(ExpressionContext context, Expression item, string value)
|
||||||
|
{
|
||||||
|
if (item is MemberExpression member)
|
||||||
|
{
|
||||||
|
if (member.Expression is ParameterExpression parameterExpression)
|
||||||
|
{
|
||||||
|
if (value != null && value.Contains("(") && !value.Contains(" "))
|
||||||
|
{
|
||||||
|
var guid = Guid.NewGuid() + "";
|
||||||
|
var guid2 = Guid.NewGuid() + "";
|
||||||
|
value = value.Replace("(", guid).Replace(")", guid2);
|
||||||
|
value = context.GetTranslationColumnName(value);
|
||||||
|
value = value.Replace(guid, "(").Replace(guid2, ")");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return value;
|
||||||
|
}
|
||||||
internal static Expression GetConditionalExpression(Expression item)
|
internal static Expression GetConditionalExpression(Expression item)
|
||||||
{
|
{
|
||||||
ConstantExpression trueConstant = Expression.Constant(true, typeof(bool));
|
ConstantExpression trueConstant = Expression.Constant(true, typeof(bool));
|
||||||
|
@ -386,31 +386,12 @@ namespace SqlSugar
|
|||||||
this.Start();
|
this.Start();
|
||||||
parameter.IsAppendResult();
|
parameter.IsAppendResult();
|
||||||
var value = parameter.CommonTempData.ObjToString();
|
var value = parameter.CommonTempData.ObjToString();
|
||||||
value = ResolveMemberValue(item, value);
|
value =ExpressionTool.ResolveMemberValue(this.Context,item, value);
|
||||||
this.Context.Result.Append(this.Context.GetAsString2(asName, value));
|
this.Context.Result.Append(this.Context.GetAsString2(asName, value));
|
||||||
this.Context.Result.CurrentParameter = null;
|
this.Context.Result.CurrentParameter = null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
protected string ResolveMemberValue(Expression item, string value)
|
|
||||||
{
|
|
||||||
if (item is MemberExpression member)
|
|
||||||
{
|
|
||||||
if (member.Expression is ParameterExpression parameterExpression)
|
|
||||||
{
|
|
||||||
if (value != null && value.Contains("(") && !value.Contains(" "))
|
|
||||||
{
|
|
||||||
var guid = Guid.NewGuid() + "";
|
|
||||||
var guid2 = Guid.NewGuid() + "";
|
|
||||||
value = value.Replace("(", guid).Replace(")", guid2);
|
|
||||||
value = this.Context.GetTranslationColumnName(value);
|
|
||||||
value = value.Replace(guid, "(").Replace(guid2, ")");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return value;
|
|
||||||
}
|
|
||||||
|
|
||||||
private void ResolveMemberConst(ExpressionParameter parameter, Expression item, string asName)
|
private void ResolveMemberConst(ExpressionParameter parameter, Expression item, string asName)
|
||||||
{
|
{
|
||||||
this.Expression = item;
|
this.Expression = item;
|
||||||
|
@ -451,6 +451,10 @@ namespace SqlSugar
|
|||||||
IsMember = parameter.ChildExpression is MemberExpression && !ExpressionTool.IsConstExpression(parameter.ChildExpression as MemberExpression),
|
IsMember = parameter.ChildExpression is MemberExpression && !ExpressionTool.IsConstExpression(parameter.ChildExpression as MemberExpression),
|
||||||
MemberName = parameter.CommonTempData
|
MemberName = parameter.CommonTempData
|
||||||
};
|
};
|
||||||
|
if (methodCallExpressionArgs.MemberName is string)
|
||||||
|
{
|
||||||
|
methodCallExpressionArgs.MemberName = ExpressionTool.ResolveMemberValue(this.Context, item, methodCallExpressionArgs.MemberName?.ToString());
|
||||||
|
}
|
||||||
if (methodCallExpressionArgs.MemberName is MapperSql)
|
if (methodCallExpressionArgs.MemberName is MapperSql)
|
||||||
{
|
{
|
||||||
methodCallExpressionArgs.MemberName = (methodCallExpressionArgs.MemberName as MapperSql).Sql;
|
methodCallExpressionArgs.MemberName = (methodCallExpressionArgs.MemberName as MapperSql).Sql;
|
||||||
|
Loading…
Reference in New Issue
Block a user