From 77774b544907bde593a9a5104cd2cdd1bea60f86 Mon Sep 17 00:00:00 2001 From: sunkaixuan <610262374@qq.com> Date: Sun, 30 Apr 2017 13:04:06 +0800 Subject: [PATCH] - --- OrmTest/UnitTest/ExpressionTest/Method.cs | 153 ++++++++++++++++++ .../Method/DefaultDbMethod.cs | 10 +- 2 files changed, 158 insertions(+), 5 deletions(-) diff --git a/OrmTest/UnitTest/ExpressionTest/Method.cs b/OrmTest/UnitTest/ExpressionTest/Method.cs index 49cbd3a01..4144fcfab 100644 --- a/OrmTest/UnitTest/ExpressionTest/Method.cs +++ b/OrmTest/UnitTest/ExpressionTest/Method.cs @@ -40,11 +40,164 @@ namespace OrmTest.UnitTest DateAddDay(); DateAddByType(); DateValue(); + ToInt32(); + ToInt64(); + ToDate(); + Tostring(); + ToDecimal(); + ToGuid(); + ToDouble(); + ToBool(); + Substring(); + Replace(); + Length(); #endregion } base.End("Method Test"); } + private void Length() + { + Expression> exp = it => NBORM.Length("aaaa") >1; + SqlServerExpressionContext expContext = new SqlServerExpressionContext(); + expContext.Resolve(exp, ResolveExpressType.WhereSingle); + var value = expContext.Result.GetString(); + var pars = expContext.Parameters; + base.Check(value, pars, "(LEN(@MethodConst0) > @Const1 )", new List() { + new SugarParameter("@MethodConst0","aaaa"),new SugarParameter("@Const1",1) + }, "Length"); + } + + private void Replace() + { + var x2 = Guid.NewGuid(); + Expression> exp = it => NBORM.Replace("aaaa","a", "1") == "a"; + SqlServerExpressionContext expContext = new SqlServerExpressionContext(); + expContext.Resolve(exp, ResolveExpressType.WhereSingle); + var value = expContext.Result.GetString(); + var pars = expContext.Parameters; + base.Check(value, pars, "(REPLACE(@MethodConst0,@MethodConst1,@MethodConst2) = @Const3 )", new List() { + new SugarParameter("@MethodConst0","aaaa"), new SugarParameter("@MethodConst1","a") , new SugarParameter("@MethodConst2","1"),new SugarParameter("@Const3","a") + }, "Replace"); + } + + private void Substring() + { + var x2 = Guid.NewGuid(); + Expression> exp = it => NBORM.Substring("aaaa",0,2) == "a"; + SqlServerExpressionContext expContext = new SqlServerExpressionContext(); + expContext.Resolve(exp, ResolveExpressType.WhereSingle); + var value = expContext.Result.GetString(); + var pars = expContext.Parameters; + base.Check(value, pars, "(SUBSTRING(@MethodConst0,1 + @MethodConst1,@MethodConst2) = @Const3 )", new List() { + new SugarParameter("@MethodConst0","aaaa"), new SugarParameter("@MethodConst1",0) , new SugarParameter("@MethodConst2",2),new SugarParameter("@Const3","a") + }, "Substring"); + } + + private void ToBool() + { + var x2 = Guid.NewGuid(); + Expression> exp = it => NBORM.ToBool("true") == true; + SqlServerExpressionContext expContext = new SqlServerExpressionContext(); + expContext.Resolve(exp, ResolveExpressType.WhereSingle); + var value = expContext.Result.GetString(); + var pars = expContext.Parameters; + base.Check(value, pars, "(CAST(@MethodConst0 AS BIT) = @Const1 )", new List() { + new SugarParameter("@MethodConst0","true"),new SugarParameter("@Const1",(bool)true) + }, "ToBool"); + } + + private void ToDouble() + { + var x2 = Guid.NewGuid(); + Expression> exp = it => NBORM.ToDouble("2") == 2; + SqlServerExpressionContext expContext = new SqlServerExpressionContext(); + expContext.Resolve(exp, ResolveExpressType.WhereSingle); + var value = expContext.Result.GetString(); + var pars = expContext.Parameters; + base.Check(value, pars, "(CAST(@MethodConst0 AS FLOAT) = @Const1 )", new List() { + new SugarParameter("@MethodConst0","2"),new SugarParameter("@Const1",(Double)2) + }, "ToDouble"); + } + + private void ToGuid() + { + var x2 = Guid.NewGuid(); + Expression> exp = it => NBORM.ToGuid("A94027A3-476E-478D-8228-F4054394B874") == x2; + SqlServerExpressionContext expContext = new SqlServerExpressionContext(); + expContext.Resolve(exp, ResolveExpressType.WhereSingle); + var value = expContext.Result.GetString(); + var pars = expContext.Parameters; + base.Check(value, pars, "(CAST(@MethodConst0 AS UNIQUEIDENTIFIER) = @Const1 )", new List() { + new SugarParameter("@MethodConst0","A94027A3-476E-478D-8228-F4054394B874"),new SugarParameter("@Const1",x2) + }, "ToGuid"); + } + + private void ToDecimal() + { + var x2 = DateTime.Now; + Expression> exp = it => NBORM.ToDecimal("22") == 1; + SqlServerExpressionContext expContext = new SqlServerExpressionContext(); + expContext.Resolve(exp, ResolveExpressType.WhereSingle); + var value = expContext.Result.GetString(); + var pars = expContext.Parameters; + base.Check(value, pars, "(CAST(@MethodConst0 AS MONEY) = @Const1 )", new List() { + new SugarParameter("@MethodConst0","22"),new SugarParameter("@Const1",(decimal)1) + }, "ToDecimal"); + } + + private void Tostring() + { + var x2 = DateTime.Now; + Expression> exp = it => NBORM.ToString("2015-1-1") == "a"; + SqlServerExpressionContext expContext = new SqlServerExpressionContext(); + expContext.Resolve(exp, ResolveExpressType.WhereSingle); + var value = expContext.Result.GetString(); + var pars = expContext.Parameters; + base.Check(value, pars, "(CAST(@MethodConst0 AS NVARCHAR(MAX)) = @Const1 )", new List() { + new SugarParameter("@MethodConst0","2015-1-1"),new SugarParameter("@Const1","a") + }, "Tostring"); + } + + private void ToDate() + { + var x2 = DateTime.Now; + Expression> exp = it => NBORM.ToDate("2015-1-1") == x2; + SqlServerExpressionContext expContext = new SqlServerExpressionContext(); + expContext.Resolve(exp, ResolveExpressType.WhereSingle); + var value = expContext.Result.GetString(); + var pars = expContext.Parameters; + base.Check(value, pars, "(CAST(@MethodConst0 AS DATETIME) = @Const1 )", new List() { + new SugarParameter("@MethodConst0","2015-1-1"),new SugarParameter("@Const1",x2) + }, "ToDate"); + } + + private void ToInt64() + { + var x2 = DateTime.Now; + Expression> exp = it => NBORM.ToInt64("3") == 1; + SqlServerExpressionContext expContext = new SqlServerExpressionContext(); + expContext.Resolve(exp, ResolveExpressType.WhereSingle); + var value = expContext.Result.GetString(); + var pars = expContext.Parameters; + base.Check(value, pars, "(CAST(@MethodConst0 AS BIGINT) = @Const1 )", new List() { + new SugarParameter("@MethodConst0","3"),new SugarParameter("@Const1",(Int64)1) + }, "ToInt64"); + } + + private void ToInt32() + { + var x2 = DateTime.Now; + Expression> exp = it => NBORM.ToInt32("3")== 1; + SqlServerExpressionContext expContext = new SqlServerExpressionContext(); + expContext.Resolve(exp, ResolveExpressType.WhereSingle); + var value = expContext.Result.GetString(); + var pars = expContext.Parameters; + base.Check(value, pars, "(CAST(@MethodConst0 AS INT) = @Const1 )", new List() { + new SugarParameter("@MethodConst0","3"),new SugarParameter("@Const1",1) + }, "ToInt32"); + } + private void DateValue() { var x2 = DateTime.Now; diff --git a/SqlSugar/ExpressionsToSql/Method/DefaultDbMethod.cs b/SqlSugar/ExpressionsToSql/Method/DefaultDbMethod.cs index 9445437a6..5c97c408e 100644 --- a/SqlSugar/ExpressionsToSql/Method/DefaultDbMethod.cs +++ b/SqlSugar/ExpressionsToSql/Method/DefaultDbMethod.cs @@ -125,31 +125,31 @@ namespace SqlSugar public string ToGuid(MethodCallExpressionModel model) { var parameter = model.Args[0]; - return string.Format(" CAST({0} AS UNIQUEIDENTIFIER", parameter.Value); + return string.Format(" CAST({0} AS UNIQUEIDENTIFIER)", parameter.Value); } public string ToDouble(MethodCallExpressionModel model) { var parameter = model.Args[0]; - return string.Format(" CAST({0} AS FLOAT", parameter.Value); + return string.Format(" CAST({0} AS FLOAT)", parameter.Value); } public string ToBool(MethodCallExpressionModel model) { var parameter = model.Args[0]; - return string.Format(" CAST({0} AS BIT", parameter.Value); + return string.Format(" CAST({0} AS BIT)", parameter.Value); } public string ToDate(MethodCallExpressionModel model) { var parameter = model.Args[0]; - return string.Format(" CAST({0} AS DATETIME", parameter.Value); + return string.Format(" CAST({0} AS DATETIME)", parameter.Value); } public string ToDecimal(MethodCallExpressionModel model) { var parameter = model.Args[0]; - return string.Format(" CAST({0} AS MONEY", parameter.Value); + return string.Format(" CAST({0} AS MONEY)", parameter.Value); } public string Substring(MethodCallExpressionModel model) {