From f99d6337de431dbec0643b7e5530c1191da354d8 Mon Sep 17 00:00:00 2001 From: skx <610262374@qq.com> Date: Tue, 27 Oct 2020 15:21:26 +0800 Subject: [PATCH] Update exp to sql --- .../Common/MethodCallExpressionModel.cs | 2 ++ .../MethodCallExpressionResolve.cs | 30 ++++++++++--------- 2 files changed, 18 insertions(+), 14 deletions(-) diff --git a/Src/Asp.Net/SqlSugar/ExpressionsToSql/Common/MethodCallExpressionModel.cs b/Src/Asp.Net/SqlSugar/ExpressionsToSql/Common/MethodCallExpressionModel.cs index 78f7ab76a..4800fb3d6 100644 --- a/Src/Asp.Net/SqlSugar/ExpressionsToSql/Common/MethodCallExpressionModel.cs +++ b/Src/Asp.Net/SqlSugar/ExpressionsToSql/Common/MethodCallExpressionModel.cs @@ -11,6 +11,8 @@ namespace SqlSugar public List Args { get; set; } public string Name { get; set; } public dynamic Data { get; set; } + public Expression Expression { get; set; } + public Expression BaseExpression { get; set; } } public class MethodCallExpressionArgs diff --git a/Src/Asp.Net/SqlSugar/ExpressionsToSql/ResolveItems/MethodCallExpressionResolve.cs b/Src/Asp.Net/SqlSugar/ExpressionsToSql/ResolveItems/MethodCallExpressionResolve.cs index 372b77f5d..0810bbc50 100644 --- a/Src/Asp.Net/SqlSugar/ExpressionsToSql/ResolveItems/MethodCallExpressionResolve.cs +++ b/Src/Asp.Net/SqlSugar/ExpressionsToSql/ResolveItems/MethodCallExpressionResolve.cs @@ -448,7 +448,7 @@ namespace SqlSugar methodCallExpressionArgs.IsMember = false; } } - if (IsDateDate(item)||IsDateValue(item)) + if (IsDateDate(item) || IsDateValue(item)) { methodCallExpressionArgs.IsMember = true; } @@ -473,22 +473,24 @@ namespace SqlSugar private static bool IsDateDate(Expression item) { - return item.Type == UtilConstants.DateType && item is MemberExpression && (item as MemberExpression).Member.Name == "Date"&&item.ToString()!= "DateTime.Now.Date"; + return item.Type == UtilConstants.DateType && item is MemberExpression && (item as MemberExpression).Member.Name == "Date" && item.ToString() != "DateTime.Now.Date"; } private static bool IsDateValue(Expression item) { - return item.Type == UtilConstants.IntType && - item is MemberExpression && - (item as MemberExpression).Expression!=null&& - (item as MemberExpression).Expression.Type==UtilConstants.DateType&& - (item as MemberExpression).Expression is MemberExpression&& - ((item as MemberExpression).Expression as MemberExpression).Member.Name=="Value"; + return item.Type == UtilConstants.IntType && + item is MemberExpression && + (item as MemberExpression).Expression != null && + (item as MemberExpression).Expression.Type == UtilConstants.DateType && + (item as MemberExpression).Expression is MemberExpression && + ((item as MemberExpression).Expression as MemberExpression).Member.Name == "Value"; } private object GetMethodValue(string name, MethodCallExpressionModel model) { if (IsExtMethod(name)) { + model.Expression = this.Expression; + model.BaseExpression = this.BaseParameter.CurrentExpression; DbType type = DbType.SqlServer; if (this.Context is SqlServerExpressionContext) type = DbType.SqlServer; @@ -502,7 +504,7 @@ namespace SqlSugar } else { - if (name == "Parse" && TempParseType.IsIn(UtilConstants.GuidType)&&model.Args!=null&&model.Args.Count()>1) + if (name == "Parse" && TempParseType.IsIn(UtilConstants.GuidType) && model.Args != null && model.Args.Count() > 1) { name = "Equals"; } @@ -549,15 +551,15 @@ namespace SqlSugar model.Args[0].MemberValue = first.Value; } } - model.Data =this.Context.SqlParameterKeyWord+"INP_"+this.Context.ParameterIndex; + model.Data = this.Context.SqlParameterKeyWord + "INP_" + this.Context.ParameterIndex; this.Context.ParameterIndex++; if (model.Args[0].MemberValue.HasValue()) { var inValueIEnumerable = (IEnumerable)model.Args[0].MemberValue; int i = 0; - foreach (var item in inValueIEnumerable) + foreach (var item in inValueIEnumerable) { - this.Context.Parameters.Add(new SugarParameter(model.Data+"_"+i,item)); + this.Context.Parameters.Add(new SugarParameter(model.Data + "_" + i, item)); i++; } } @@ -760,7 +762,7 @@ namespace SqlSugar { joinStringParameter.Args.Add(new MethodCallExpressionArgs() { - MemberName=r.TrimStart('@') + MemberName = r.TrimStart('@') }); } else @@ -769,7 +771,7 @@ namespace SqlSugar var name = base.AppendParameter(r); joinStringParameter.Args.Add(new MethodCallExpressionArgs() { - MemberName= name + MemberName = name }); } }