diff --git a/OrmTest/UnitTest/ExpressionTest/Method.cs b/OrmTest/UnitTest/ExpressionTest/Method.cs index 18c328e5f..49cbd3a01 100644 --- a/OrmTest/UnitTest/ExpressionTest/Method.cs +++ b/OrmTest/UnitTest/ExpressionTest/Method.cs @@ -48,14 +48,14 @@ namespace OrmTest.UnitTest private void DateValue() { var x2 = DateTime.Now; - Expression> exp = it => NBORM.DateValue(x2,DateType.Year); + Expression> exp = it => NBORM.DateValue(x2,DateType.Year)==1; SqlServerExpressionContext expContext = new SqlServerExpressionContext(); expContext.Resolve(exp, ResolveExpressType.WhereSingle); var value = expContext.Result.GetString(); var pars = expContext.Parameters; - base.Check(value, pars, " (@MethodConst1(@MethodConst0)) ", new List() { - new SugarParameter("@MethodConst0",x2),new SugarParameter("@MethodConst1",DateType.Year) - }, "StartsWith"); + base.Check(value, pars, " ((@MethodConst1(@MethodConst0)) = @Const2 ) ", new List() { + new SugarParameter("@MethodConst0",x2),new SugarParameter("@MethodConst1",DateType.Year),new SugarParameter("@Const2",1) + }, "DateValue"); } private void StartsWith() @@ -95,26 +95,26 @@ namespace OrmTest.UnitTest private void DateAddByType() { var x2 = DateTime.Now; - Expression> exp = it => NBORM.DateAdd(x2, 11, DateType.Millisecond); + Expression> exp = it => NBORM.DateAdd(x2, 11, DateType.Millisecond)==x2; SqlServerExpressionContext expContext = new SqlServerExpressionContext(); expContext.Resolve(exp, ResolveExpressType.WhereSingle); var value = expContext.Result.GetString(); var pars = expContext.Parameters; - base.Check(value, pars, " (DATEADD(@MethodConst2,@MethodConst1,@MethodConst0)) ", new List() { - new SugarParameter("@MethodConst0",x2),new SugarParameter("@MethodConst1",11), + base.Check(value, pars, "((DATEADD(@MethodConst2,@MethodConst1,@MethodConst0)) = @Const3 )", new List() { + new SugarParameter("@MethodConst0",x2),new SugarParameter("@MethodConst1",11),new SugarParameter("@Const3",x2), new SugarParameter("@MethodConst2",DateType.Millisecond) }, "DateAddByType"); } private void DateAddDay() { var x2 = DateTime.Now; - Expression> exp = it => NBORM.DateAdd(x2, 1); + Expression> exp = it => NBORM.DateAdd(x2, 1)==x2; SqlServerExpressionContext expContext = new SqlServerExpressionContext(); expContext.Resolve(exp, ResolveExpressType.WhereSingle); var value = expContext.Result.GetString(); var pars = expContext.Parameters; - base.Check(value, pars, " (DATEADD(day,@MethodConst1,@MethodConst0)) ", new List() { - new SugarParameter("@MethodConst0",x2),new SugarParameter("@MethodConst1",1) + base.Check(value, pars, "((DATEADD(day,@MethodConst1,@MethodConst0)) = @Const2 )", new List() { + new SugarParameter("@MethodConst0",x2),new SugarParameter("@MethodConst1",1),new SugarParameter("@Const2",x2) }, "DateIsSameByType"); } diff --git a/SqlSugar/ExpressionsToSql/Method/DefaultDbMethod.cs b/SqlSugar/ExpressionsToSql/Method/DefaultDbMethod.cs index b4fadb485..697be7d37 100644 --- a/SqlSugar/ExpressionsToSql/Method/DefaultDbMethod.cs +++ b/SqlSugar/ExpressionsToSql/Method/DefaultDbMethod.cs @@ -13,46 +13,46 @@ namespace SqlSugar return string.Format("( {0}='' OR {0} IS NULL )", parameter.Value); } - public virtual object ToUpper(MethodCallExpressionModel model) + public virtual string ToUpper(MethodCallExpressionModel model) { var parameter = model.Args[0]; return string.Format(" (UPPER({0})) ", parameter.Value); } - public virtual object ToLower(MethodCallExpressionModel model) + public virtual string ToLower(MethodCallExpressionModel model) { var parameter = model.Args[0]; return string.Format(" (LOWER({0})) ", parameter.Value); } - public virtual object Trim(MethodCallExpressionModel model) + public virtual string Trim(MethodCallExpressionModel model) { var parameter = model.Args[0]; return string.Format(" (rtrim(ltrim({0}))) ", parameter.Value); } - public virtual object Contains(MethodCallExpressionModel model) + public virtual string Contains(MethodCallExpressionModel model) { var parameter = model.Args[0]; var parameter2 = model.Args[1]; return string.Format(" ({0} like '%'+{1}+'%') ", parameter.Value, parameter2.Value); } - public object Equals(MethodCallExpressionModel model) + public string Equals(MethodCallExpressionModel model) { var parameter = model.Args[0]; var parameter2 = model.Args[1]; return string.Format(" ({0} = {1}) ", parameter.Value, parameter2.Value); ; } - public object DateIsSameDay(MethodCallExpressionModel model) + public string DateIsSameDay(MethodCallExpressionModel model) { var parameter = model.Args[0]; var parameter2 = model.Args[1]; return string.Format(" (DATEDIFF(day,{0},{1})=0) ", parameter.Value, parameter2.Value); ; } - public object DateIsSameByType(MethodCallExpressionModel model) + public string DateIsSameByType(MethodCallExpressionModel model) { var parameter = model.Args[0]; var parameter2 = model.Args[1]; @@ -60,7 +60,7 @@ namespace SqlSugar return string.Format(" (DATEDIFF({2},{0},{1})=0) ", parameter.Value, parameter2.Value, parameter3.Value); } - public object DateAddByType(MethodCallExpressionModel model) + public string DateAddByType(MethodCallExpressionModel model) { var parameter = model.Args[0]; var parameter2 = model.Args[1]; @@ -68,14 +68,14 @@ namespace SqlSugar return string.Format(" (DATEADD({2},{1},{0})) ", parameter.Value, parameter2.Value, parameter3.Value); } - public object DateAddDay(MethodCallExpressionModel model) + public string DateAddDay(MethodCallExpressionModel model) { var parameter = model.Args[0]; var parameter2 = model.Args[1]; return string.Format(" (DATEADD(day,{1},{0})) ", parameter.Value, parameter2.Value); } - public object Between(MethodCallExpressionModel model) + public string Between(MethodCallExpressionModel model) { var parameter = model.Args[0]; var parameter1 = model.Args[1]; @@ -83,21 +83,21 @@ namespace SqlSugar return string.Format(" ({0} BETWEEN {1} AND {2}) ", parameter.Value, parameter1.Value, parameter2.Value); } - public object StartsWith(MethodCallExpressionModel model) + public string StartsWith(MethodCallExpressionModel model) { var parameter = model.Args[0]; var parameter2 = model.Args[1]; return string.Format(" ({0} like {1}+'%') ", parameter.Value, parameter2.Value); } - public object EndsWith(MethodCallExpressionModel model) + public string EndsWith(MethodCallExpressionModel model) { var parameter = model.Args[0]; var parameter2 = model.Args[1]; return string.Format(" ({0} like '%'+{1}) ", parameter.Value, parameter2.Value); } - public object DateValue(MethodCallExpressionModel model) + public string DateValue(MethodCallExpressionModel model) { var parameter = model.Args[0]; var parameter2 = model.Args[1]; diff --git a/SqlSugar/ExpressionsToSql/Method/IDbMethods.cs b/SqlSugar/ExpressionsToSql/Method/IDbMethods.cs index d678a0e59..efad1b8c3 100644 --- a/SqlSugar/ExpressionsToSql/Method/IDbMethods.cs +++ b/SqlSugar/ExpressionsToSql/Method/IDbMethods.cs @@ -12,18 +12,18 @@ namespace SqlSugar public interface IDbMethods { string IsNullOrEmpty(MethodCallExpressionModel model); - object ToLower(MethodCallExpressionModel model); - object ToUpper(MethodCallExpressionModel model); - object Trim(MethodCallExpressionModel model); - object Contains(MethodCallExpressionModel model); - object Equals(MethodCallExpressionModel model); - object DateIsSameDay(MethodCallExpressionModel model); - object DateIsSameByType(MethodCallExpressionModel model); - object DateAddByType(MethodCallExpressionModel model); - object DateValue(MethodCallExpressionModel model); - object DateAddDay(MethodCallExpressionModel model); - object Between(MethodCallExpressionModel model); - object StartsWith(MethodCallExpressionModel model); - object EndsWith(MethodCallExpressionModel model); + string ToLower(MethodCallExpressionModel model); + string ToUpper(MethodCallExpressionModel model); + string Trim(MethodCallExpressionModel model); + string Contains(MethodCallExpressionModel model); + string Equals(MethodCallExpressionModel model); + string DateIsSameDay(MethodCallExpressionModel model); + string DateIsSameByType(MethodCallExpressionModel model); + string DateAddByType(MethodCallExpressionModel model); + string DateValue(MethodCallExpressionModel model); + string DateAddDay(MethodCallExpressionModel model); + string Between(MethodCallExpressionModel model); + string StartsWith(MethodCallExpressionModel model); + string EndsWith(MethodCallExpressionModel model); } }