Update exp to sql

This commit is contained in:
sunkaixuan 2024-04-23 17:11:01 +08:00
parent 18c6c23678
commit 1b479e1788
3 changed files with 24 additions and 22 deletions

View File

@ -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));

View File

@ -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;

View File

@ -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;