From f922b9ba535500a81d224325d359a4851a9c8551 Mon Sep 17 00:00:00 2001 From: sunkaixuan <610262374@qq.com> Date: Tue, 28 May 2019 18:46:44 +0800 Subject: [PATCH] Update exp to sql --- Src/Asp.Net/SqlServerTest/UnitTest/UQueryable.cs | 2 ++ .../ResolveItems/MethodCallExpressionResolve.cs | 13 +++++++++++++ 2 files changed, 15 insertions(+) diff --git a/Src/Asp.Net/SqlServerTest/UnitTest/UQueryable.cs b/Src/Asp.Net/SqlServerTest/UnitTest/UQueryable.cs index 62bc9d064..e9fd09935 100644 --- a/Src/Asp.Net/SqlServerTest/UnitTest/UQueryable.cs +++ b/Src/Asp.Net/SqlServerTest/UnitTest/UQueryable.cs @@ -28,6 +28,8 @@ namespace OrmTest Db.CodeFirst.InitTables(); Db.Queryable().Where(it => it.Id.HasValue).ToList(); + + Db.Queryable().Where(it => SqlSugar.SqlFunc.Equals(it.CreateTime.Date, it.CreateTime.Date)).ToList(); } diff --git a/Src/Asp.Net/SqlSugar/ExpressionsToSql/ResolveItems/MethodCallExpressionResolve.cs b/Src/Asp.Net/SqlSugar/ExpressionsToSql/ResolveItems/MethodCallExpressionResolve.cs index 8a851f7af..ed9c4c62c 100644 --- a/Src/Asp.Net/SqlSugar/ExpressionsToSql/ResolveItems/MethodCallExpressionResolve.cs +++ b/Src/Asp.Net/SqlSugar/ExpressionsToSql/ResolveItems/MethodCallExpressionResolve.cs @@ -413,6 +413,10 @@ namespace SqlSugar { parameter.CommonTempData = DateTime.Now.Date; } + else if (IsDateDate(item)) + { + parameter.CommonTempData = GetNewExpressionValue(item); + } else if (model.Name == "ToString" && item is ConstantExpression && (item as ConstantExpression).Type.IsEnum()) { parameter.CommonTempData = item.ToString(); @@ -439,6 +443,10 @@ namespace SqlSugar methodCallExpressionArgs.IsMember = false; } } + if (IsDateDate(item)) + { + methodCallExpressionArgs.IsMember = true; + } if (methodCallExpressionArgs.IsMember == false && (item is MethodCallExpression && item.ToString() == "GetDate()") || (item is UnaryExpression && ((UnaryExpression)item).Operand.ToString() == "GetDate()")) { var parameterName = this.Context.SqlParameterKeyWord + ExpressionConst.MethodConst + this.Context.ParameterIndex; @@ -458,6 +466,11 @@ namespace SqlSugar parameter.ChildExpression = null; } + private static bool IsDateDate(Expression item) + { + return item.Type == UtilConstants.DateType && item is MemberExpression && (item as MemberExpression).Member.Name == "Date"; + } + private object GetMethodValue(string name, MethodCallExpressionModel model) { if (IsExtMethod(name))