Update exp to sql

This commit is contained in:
sunkaixuan
2022-08-10 14:07:06 +08:00
parent 2d3d576cf1
commit 35e520128d
3 changed files with 15 additions and 6 deletions

View File

@@ -46,6 +46,7 @@ namespace SqlSugar
var name =this.Context.GetTranslationColumnName((argExp as LambdaExpression).Parameters[0].Name); var name =this.Context.GetTranslationColumnName((argExp as LambdaExpression).Parameters[0].Name);
var parameter = (argExp as LambdaExpression).Parameters.Last(); var parameter = (argExp as LambdaExpression).Parameters.Last();
Context.InitMappingInfo(parameter.Type); Context.InitMappingInfo(parameter.Type);
this.Context.RefreshMapping();
var tableName= Context.GetTranslationTableName(parameter.Type.Name, true); var tableName= Context.GetTranslationTableName(parameter.Type.Name, true);
var joinString =string.Format(" {2} INNER JOIN {1} {0} ", var joinString =string.Format(" {2} INNER JOIN {1} {0} ",
this.Context.GetTranslationColumnName(parameter.Name), this.Context.GetTranslationColumnName(parameter.Name),

View File

@@ -46,6 +46,7 @@ namespace SqlSugar
var name =this.Context.GetTranslationColumnName((argExp as LambdaExpression).Parameters[0].Name); var name =this.Context.GetTranslationColumnName((argExp as LambdaExpression).Parameters[0].Name);
var parameter = (argExp as LambdaExpression).Parameters.Last(); var parameter = (argExp as LambdaExpression).Parameters.Last();
Context.InitMappingInfo(parameter.Type); Context.InitMappingInfo(parameter.Type);
this.Context.RefreshMapping();
var tableName= Context.GetTranslationTableName(parameter.Type.Name, true); var tableName= Context.GetTranslationTableName(parameter.Type.Name, true);
var joinString =string.Format(" {2} LEFT JOIN {1} {0} ", var joinString =string.Format(" {2} LEFT JOIN {1} {0} ",
this.Context.GetTranslationColumnName(parameter.Name), this.Context.GetTranslationColumnName(parameter.Name),

View File

@@ -43,12 +43,7 @@ namespace SqlSugar
public string GetValue(Expression expression = null) public string GetValue(Expression expression = null)
{ {
var exp = expression as MethodCallExpression; var exp = expression as MethodCallExpression;
var entityType = (exp.Arguments[0] as LambdaExpression).Parameters[0].Type; InitType(exp);
if (this.Context.InitMappingInfo != null)
{
this.Context.InitMappingInfo(entityType);
this.Context.RefreshMapping();
}
var result = ""; var result = "";
if (this.Context.JoinIndex == 0) if (this.Context.JoinIndex == 0)
result = SubTools.GetMethodValue(this.Context, exp.Arguments[0], ResolveExpressType.FieldSingle); result = SubTools.GetMethodValue(this.Context, exp.Arguments[0], ResolveExpressType.FieldSingle);
@@ -60,6 +55,18 @@ namespace SqlSugar
return result; return result;
} }
private void InitType(MethodCallExpression exp)
{
foreach (var arg in (exp.Arguments[0] as LambdaExpression).Parameters)
{
if (this.Context.InitMappingInfo != null)
{
this.Context.InitMappingInfo(arg.Type);
this.Context.RefreshMapping();
}
}
}
public void SetShortName(MethodCallExpression exp, string result) public void SetShortName(MethodCallExpression exp, string result)
{ {
if (exp.Arguments[0] is LambdaExpression && result.IsContainsIn("+", "-","*","/")) if (exp.Arguments[0] is LambdaExpression && result.IsContainsIn("+", "-","*","/"))