From 2cc49802319ab2795511f6ee59395baafce4dd0e Mon Sep 17 00:00:00 2001 From: sunkaixuan <610262374@qq.com> Date: Sat, 29 Apr 2017 23:08:14 +0800 Subject: [PATCH] - --- OrmTest/UnitTest/ExpressionTest/Method.cs | 9 ++++++++- SqlSugar/ExpressionsToSql/Method/DefaultDbMethod.cs | 8 ++++++++ SqlSugar/ExpressionsToSql/Method/IDbMethods.cs | 1 + SqlSugar/ExpressionsToSql/Method/NBORM.cs | 1 + .../ResolveItems/MethodCallExpressionResolve.cs | 2 ++ 5 files changed, 20 insertions(+), 1 deletion(-) diff --git a/OrmTest/UnitTest/ExpressionTest/Method.cs b/OrmTest/UnitTest/ExpressionTest/Method.cs index d944776af..a0cc4555d 100644 --- a/OrmTest/UnitTest/ExpressionTest/Method.cs +++ b/OrmTest/UnitTest/ExpressionTest/Method.cs @@ -44,7 +44,14 @@ namespace OrmTest.UnitTest private void Between() { - //throw new NotImplementedException(); + Expression> exp = it => NBORM.Between(it.Name,1, 2); + SqlServerExpressionContext expContext = new SqlServerExpressionContext(); + expContext.Resolve(exp, ResolveExpressType.WhereSingle); + var value = expContext.Result.GetString(); + var pars = expContext.Parameters; + base.Check(value, pars, " ([Name] BETWEEN @MethodConst0 AND @MethodConst1) ", new List() { + new SugarParameter("@MethodConst0",1),new SugarParameter("@MethodConst1",2), + }, "Between"); } private void DateAddByType() diff --git a/SqlSugar/ExpressionsToSql/Method/DefaultDbMethod.cs b/SqlSugar/ExpressionsToSql/Method/DefaultDbMethod.cs index 64e4178e6..1aa0164eb 100644 --- a/SqlSugar/ExpressionsToSql/Method/DefaultDbMethod.cs +++ b/SqlSugar/ExpressionsToSql/Method/DefaultDbMethod.cs @@ -74,5 +74,13 @@ namespace SqlSugar var parameter2 = model.Args[1]; return string.Format(" (DATEADD(day,{1},{0})) ", parameter.Value, parameter2.Value); } + + public object Between(MethodCallExpressionModel model) + { + var parameter = model.Args[0]; + var parameter1 = model.Args[1]; + var parameter2 = model.Args[2]; + return string.Format(" ({0} BETWEEN {1} AND {2}) ", parameter.Value, parameter1.Value, parameter2.Value); + } } } diff --git a/SqlSugar/ExpressionsToSql/Method/IDbMethods.cs b/SqlSugar/ExpressionsToSql/Method/IDbMethods.cs index a50c2a342..0369d4482 100644 --- a/SqlSugar/ExpressionsToSql/Method/IDbMethods.cs +++ b/SqlSugar/ExpressionsToSql/Method/IDbMethods.cs @@ -21,5 +21,6 @@ namespace SqlSugar object DateIsSameByType(MethodCallExpressionModel model); object DateAddByType(MethodCallExpressionModel model); object DateAddDay(MethodCallExpressionModel model); + object Between(MethodCallExpressionModel model); } } diff --git a/SqlSugar/ExpressionsToSql/Method/NBORM.cs b/SqlSugar/ExpressionsToSql/Method/NBORM.cs index 2456d3a8a..d41fbcd70 100644 --- a/SqlSugar/ExpressionsToSql/Method/NBORM.cs +++ b/SqlSugar/ExpressionsToSql/Method/NBORM.cs @@ -18,5 +18,6 @@ namespace SqlSugar public static bool DateIsSame(DateTime date1, DateTime date2, DateType dataType) { throw new NotImplementedException(); } public static bool DateAdd(DateTime date1, int addValue, DateType millisecond){ throw new NotImplementedException(); } public static bool DateAdd(DateTime date1, int addValue) { throw new NotImplementedException(); } + public static bool Between(object value, object start, object end){ throw new NotImplementedException();} } } diff --git a/SqlSugar/ExpressionsToSql/ResolveItems/MethodCallExpressionResolve.cs b/SqlSugar/ExpressionsToSql/ResolveItems/MethodCallExpressionResolve.cs index f9363ddf7..2b819e300 100644 --- a/SqlSugar/ExpressionsToSql/ResolveItems/MethodCallExpressionResolve.cs +++ b/SqlSugar/ExpressionsToSql/ResolveItems/MethodCallExpressionResolve.cs @@ -90,6 +90,8 @@ namespace SqlSugar return this.Context.DbMehtods.DateAddDay(model); else return this.Context.DbMehtods.DateAddByType(model); + case "Between": + return this.Context.DbMehtods.Between(model); default: break; }