From 552fa6ff41fc1115944036c3c2bfe010a584e448 Mon Sep 17 00:00:00 2001 From: sunkaixuan <610262374@qq.com> Date: Sun, 24 Sep 2017 18:32:15 +0800 Subject: [PATCH] Update Oracle --- Src/Asp.Net/OracleTest/Program.cs | 4 +- .../UnitTest/ExpressionTest/Method.cs | 322 +++++++++--------- .../SqlBuilder/OracleExpressionContext.cs | 35 +- 3 files changed, 197 insertions(+), 164 deletions(-) diff --git a/Src/Asp.Net/OracleTest/Program.cs b/Src/Asp.Net/OracleTest/Program.cs index db5a0b3f3..ba73b5797 100644 --- a/Src/Asp.Net/OracleTest/Program.cs +++ b/Src/Asp.Net/OracleTest/Program.cs @@ -22,8 +22,8 @@ namespace OrmTest // /***Unit Test***/ new Select(1).Init(); new Field(1).Init(); - new Where(1).Init(); - //new Method(1).Init(); + // new Where(1).Init(); + new Method(1).Init(); //new JoinQuery(1).Init(); //new SingleQuery(1).Init(); //new SelectQuery(1).Init(); diff --git a/Src/Asp.Net/OracleTest/UnitTest/ExpressionTest/Method.cs b/Src/Asp.Net/OracleTest/UnitTest/ExpressionTest/Method.cs index 25bf15df7..43ac063f3 100644 --- a/Src/Asp.Net/OracleTest/UnitTest/ExpressionTest/Method.cs +++ b/Src/Asp.Net/OracleTest/UnitTest/ExpressionTest/Method.cs @@ -78,24 +78,24 @@ namespace OrmTest.UnitTest private void ExtendToString() { Expression> exp = it => it.Id.ToString() == "a"; - SqlServerExpressionContext expContext = new SqlServerExpressionContext(); + OracleExpressionContext expContext = new OracleExpressionContext(); expContext.Resolve(exp, ResolveExpressType.WhereSingle); var value = expContext.Result.GetString(); var pars = expContext.Parameters; - base.Check(value, pars, "(CAST([Id] AS NVARCHAR(MAX)) = @Const0 )", new List() { - new SugarParameter("@Const0","a") + base.Check(value, pars, "(CAST(\"ID\" AS VARCHAR2(4000)) = :Const0 )", new List() { + new SugarParameter(":Const0","a") }, "ExtendToString error"); } private void ConvetToString() { Expression> exp = it => Convert.ToString(it.Id) == "a"; - SqlServerExpressionContext expContext = new SqlServerExpressionContext(); + OracleExpressionContext expContext = new OracleExpressionContext(); expContext.Resolve(exp, ResolveExpressType.WhereSingle); var value = expContext.Result.GetString(); var pars = expContext.Parameters; - base.Check(value, pars, "(CAST([Id] AS NVARCHAR(MAX)) = @Const0 )", new List() { - new SugarParameter("@Const0","a") + base.Check(value, pars, "(CAST(\"ID\" AS VARCHAR2(4000)) = :Const0 )", new List() { + new SugarParameter(":Const0","a") }, "ConvetToString error"); } @@ -103,12 +103,12 @@ namespace OrmTest.UnitTest private void Length() { Expression> exp = it => SqlFunc.Length("aaaa") > 1; - SqlServerExpressionContext expContext = new SqlServerExpressionContext(); + OracleExpressionContext expContext = new OracleExpressionContext(); 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) + base.Check(value, pars, "(LEN(:MethodConst0) > :Const1 )", new List() { + new SugarParameter(":MethodConst0","aaaa"),new SugarParameter(":Const1",1) }, "Length error"); Length2(); @@ -118,24 +118,24 @@ namespace OrmTest.UnitTest private void Length2() { Expression> exp = it => it.Name.Length > 1; - SqlServerExpressionContext expContext = new SqlServerExpressionContext(); + OracleExpressionContext expContext = new OracleExpressionContext(); expContext.Resolve(exp, ResolveExpressType.WhereSingle); var value = expContext.Result.GetString(); var pars = expContext.Parameters; - base.Check(value, pars, "(LEN([Name])> @Length1 )", new List() { - new SugarParameter("@Length1",1) + base.Check(value, pars, "(LEN(\"Name\")> :Length1 )", new List() { + new SugarParameter(":Length1",1) }, "Length2 error"); } private void Length3() { Expression> exp = it => it.Name.Length > "a".Length; - SqlServerExpressionContext expContext = new SqlServerExpressionContext(); + OracleExpressionContext expContext = new OracleExpressionContext(); expContext.Resolve(exp, ResolveExpressType.WhereSingle); var value = expContext.Result.GetString(); var pars = expContext.Parameters; - base.Check(value, pars, "(LEN([Name])> @Length1 )", new List() { - new SugarParameter("@Length1",1) + base.Check(value, pars, "(LEN(\"Name\")> :Length1 )", new List() { + new SugarParameter(":Length1",1) }, "Length3 error"); } @@ -143,12 +143,12 @@ namespace OrmTest.UnitTest { TimeSpan s = TimeSpan.Parse("11:22:22"); Expression> exp = it => SqlFunc.ToTime("11:12:59")==s; - SqlServerExpressionContext expContext = new SqlServerExpressionContext(); + OracleExpressionContext expContext = new OracleExpressionContext(); expContext.Resolve(exp, ResolveExpressType.WhereSingle); var value = expContext.Result.GetString(); var pars = expContext.Parameters; - base.Check(value, pars, "(CAST(@MethodConst0 AS TIME) = @Const1 )", new List() { - new SugarParameter("@MethodConst0","11:12:59"),new SugarParameter("@Const1",s) + base.Check(value, pars, "(CAST(:MethodConst0 AS TIME) = :Const1 )", new List() { + new SugarParameter(":MethodConst0","11:12:59"),new SugarParameter(":Const1",s) }, "Time error"); } @@ -157,12 +157,12 @@ namespace OrmTest.UnitTest { var x2 = Guid.NewGuid(); Expression> exp = it => SqlFunc.Replace("aaaa", "a", "1") == "a"; - SqlServerExpressionContext expContext = new SqlServerExpressionContext(); + OracleExpressionContext expContext = new OracleExpressionContext(); 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") + 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 error"); } @@ -170,24 +170,24 @@ namespace OrmTest.UnitTest { var x2 = Guid.NewGuid(); Expression> exp = it => SqlFunc.Substring("aaaa", 0, 2) == "a"; - SqlServerExpressionContext expContext = new SqlServerExpressionContext(); + OracleExpressionContext expContext = new OracleExpressionContext(); 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") + 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 error"); } private void ExtendSubstring() { var x2 = Guid.NewGuid(); Expression> exp = it =>"aaaa".Substring(0, 2)== "a"; - SqlServerExpressionContext expContext = new SqlServerExpressionContext(); + OracleExpressionContext expContext = new OracleExpressionContext(); 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") + 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 error"); } @@ -196,12 +196,12 @@ namespace OrmTest.UnitTest { var x2 = Guid.NewGuid(); Expression> exp = it => SqlFunc.ToBool("true") == true; - SqlServerExpressionContext expContext = new SqlServerExpressionContext(); + OracleExpressionContext expContext = new OracleExpressionContext(); 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) + base.Check(value, pars, "(CAST(:MethodConst0 AS BIT) = :Const1 )", new List() { + new SugarParameter(":MethodConst0","true"),new SugarParameter(":Const1",(bool)true) }, "ToBool error"); } @@ -209,12 +209,12 @@ namespace OrmTest.UnitTest { var x2 = Guid.NewGuid(); Expression> exp = it => SqlFunc.ToDouble("2") == 2; - SqlServerExpressionContext expContext = new SqlServerExpressionContext(); + OracleExpressionContext expContext = new OracleExpressionContext(); 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) + base.Check(value, pars, "(CAST(:MethodConst0 AS FLOAT) = :Const1 )", new List() { + new SugarParameter(":MethodConst0","2"),new SugarParameter(":Const1",(Double)2) }, "ToDouble error"); } @@ -222,12 +222,12 @@ namespace OrmTest.UnitTest { var x2 = Guid.NewGuid(); Expression> exp = it => SqlFunc.ToGuid("A94027A3-476E-478D-8228-F4054394B874") == x2; - SqlServerExpressionContext expContext = new SqlServerExpressionContext(); + OracleExpressionContext expContext = new OracleExpressionContext(); 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) + base.Check(value, pars, "(CAST(:MethodConst0 AS UNIQUEIDENTIFIER) = :Const1 )", new List() { + new SugarParameter(":MethodConst0","A94027A3-476E-478D-8228-F4054394B874"),new SugarParameter(":Const1",x2) }, "ToGuid error"); } @@ -235,12 +235,12 @@ namespace OrmTest.UnitTest { var x2 = DateTime.Now; Expression> exp = it => SqlFunc.ToDecimal("22") == 1; - SqlServerExpressionContext expContext = new SqlServerExpressionContext(); + OracleExpressionContext expContext = new OracleExpressionContext(); 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) + base.Check(value, pars, "(CAST(:MethodConst0 AS MONEY) = :Const1 )", new List() { + new SugarParameter(":MethodConst0","22"),new SugarParameter(":Const1",(decimal)1) }, "ToDecimal error"); } @@ -248,12 +248,12 @@ namespace OrmTest.UnitTest { var x2 = DateTime.Now; Expression> exp = it => SqlFunc.ToString("2015-1-1") == "a"; - SqlServerExpressionContext expContext = new SqlServerExpressionContext(); + OracleExpressionContext expContext = new OracleExpressionContext(); 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") + base.Check(value, pars, "(CAST(:MethodConst0 AS NVARCHAR(MAX)) = :Const1 )", new List() { + new SugarParameter(":MethodConst0","2015-1-1"),new SugarParameter(":Const1","a") }, "Tostring error"); } @@ -261,24 +261,24 @@ namespace OrmTest.UnitTest { var x2 = DateTime.Now; Expression> exp = it => SqlFunc.ToDate("2015-1-1") == x2; - SqlServerExpressionContext expContext = new SqlServerExpressionContext(); + OracleExpressionContext expContext = new OracleExpressionContext(); 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) + base.Check(value, pars, "(CAST(:MethodConst0 AS DATETIME) = :Const1 )", new List() { + new SugarParameter(":MethodConst0","2015-1-1"),new SugarParameter(":Const1",x2) }, "ToDate error"); } private void ExtendDate() { var x2 = DateTime.Now; Expression> exp = it => Convert.ToDateTime("2015-1-1") == x2; - SqlServerExpressionContext expContext = new SqlServerExpressionContext(); + OracleExpressionContext expContext = new OracleExpressionContext(); 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) + base.Check(value, pars, "(CAST(:MethodConst0 AS DATE) = :Const1 )", new List() { + new SugarParameter(":MethodConst0","2015-1-1"),new SugarParameter(":Const1",x2) }, "ExtendDate error"); } @@ -286,12 +286,12 @@ namespace OrmTest.UnitTest { var x2 = DateTime.Now; Expression> exp = it => SqlFunc.ToInt64("3") == 1; - SqlServerExpressionContext expContext = new SqlServerExpressionContext(); + OracleExpressionContext expContext = new OracleExpressionContext(); 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) + base.Check(value, pars, "(CAST(:MethodConst0 AS BIGINT) = :Const1 )", new List() { + new SugarParameter(":MethodConst0","3"),new SugarParameter(":Const1",(Int64)1) }, "ToInt64 error"); } @@ -299,12 +299,12 @@ namespace OrmTest.UnitTest { var x2 = DateTime.Now; Expression> exp = it => SqlFunc.ToInt32("3") == 1; - SqlServerExpressionContext expContext = new SqlServerExpressionContext(); + OracleExpressionContext expContext = new OracleExpressionContext(); 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) + base.Check(value, pars, "(CAST(:MethodConst0 AS INT) = :Const1 )", new List() { + new SugarParameter(":MethodConst0","3"),new SugarParameter(":Const1",1) }, "ToInt32 error"); } @@ -312,46 +312,46 @@ namespace OrmTest.UnitTest { var x2 = DateTime.Now; Expression> exp = it => SqlFunc.DateValue(x2, DateType.Year) == 1; - SqlServerExpressionContext expContext = new SqlServerExpressionContext(); + OracleExpressionContext expContext = new OracleExpressionContext(); expContext.Resolve(exp, ResolveExpressType.WhereSingle); var value = expContext.Result.GetString(); var pars = expContext.Parameters; - base.Check(value, pars, " ((@MethodConst1(@MethodConst0)) = @Const2 ) ", new List() { - new SugarParameter("@MethodConst0",x2),new SugarParameter("@MethodConst1",DateType.Year),new SugarParameter("@Const2",1) + base.Check(value, pars, " ((:MethodConst1(:MethodConst0)) = :Const2 ) ", new List() { + new SugarParameter(":MethodConst0",x2),new SugarParameter(":MethodConst1",DateType.Year),new SugarParameter(":Const2",1) }, "DateValue error"); } private void StartsWith() { Expression> exp = it => SqlFunc.StartsWith(it.Name, "a"); - SqlServerExpressionContext expContext = new SqlServerExpressionContext(); + OracleExpressionContext expContext = new OracleExpressionContext(); expContext.Resolve(exp, ResolveExpressType.WhereSingle); var value = expContext.Result.GetString(); var pars = expContext.Parameters; - base.Check(value, pars, " ([Name] like @MethodConst0+'%') ", new List() { - new SugarParameter("@MethodConst0","a") + base.Check(value, pars, " (\"NAME\" like :MethodConst0||'%') ", new List() { + new SugarParameter(":MethodConst0","a") }, "StartsWith error"); } private void EndsWith() { Expression> exp = it => SqlFunc.EndsWith(it.Name, "a"); - SqlServerExpressionContext expContext = new SqlServerExpressionContext(); + OracleExpressionContext expContext = new OracleExpressionContext(); expContext.Resolve(exp, ResolveExpressType.WhereSingle); var value = expContext.Result.GetString(); var pars = expContext.Parameters; - base.Check(value, pars, " ([Name] like '%'+@MethodConst0) ", new List() { - new SugarParameter("@MethodConst0","a") + base.Check(value, pars, " (\"NAME\" like '%'||:MethodConst0) ", new List() { + new SugarParameter(":MethodConst0","a") }, "EndsWith"); } private void Between() { Expression> exp = it => SqlFunc.Between(it.Name, 1, 2); - SqlServerExpressionContext expContext = new SqlServerExpressionContext(); + OracleExpressionContext expContext = new OracleExpressionContext(); 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), + base.Check(value, pars, " (\"NAME\" BETWEEN :MethodConst0 AND :MethodConst1) ", new List() { + new SugarParameter(":MethodConst0",1),new SugarParameter(":MethodConst1",2), }, "Between error"); } @@ -359,25 +359,25 @@ namespace OrmTest.UnitTest { var x2 = DateTime.Now; Expression> exp = it => SqlFunc.DateAdd(x2, 11, DateType.Millisecond) == x2; - SqlServerExpressionContext expContext = new SqlServerExpressionContext(); + OracleExpressionContext expContext = new OracleExpressionContext(); expContext.Resolve(exp, ResolveExpressType.WhereSingle); var value = expContext.Result.GetString(); var pars = expContext.Parameters; - 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) + 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 error"); } private void DateAddDay() { var x2 = DateTime.Now; Expression> exp = it => SqlFunc.DateAdd(x2, 1) == x2; - SqlServerExpressionContext expContext = new SqlServerExpressionContext(); + OracleExpressionContext expContext = new OracleExpressionContext(); expContext.Resolve(exp, ResolveExpressType.WhereSingle); var value = expContext.Result.GetString(); var pars = expContext.Parameters; - base.Check(value, pars, "((DATEADD(day,@MethodConst1,@MethodConst0)) = @Const2 )", new List() { - new SugarParameter("@MethodConst0",x2),new SugarParameter("@MethodConst1",1),new SugarParameter("@Const2",x2) + base.Check(value, pars, "((DATEADD(day,:MethodConst1,:MethodConst0)) = :Const2 )", new List() { + new SugarParameter(":MethodConst0",x2),new SugarParameter(":MethodConst1",1),new SugarParameter(":Const2",x2) }, "DateAddDay error"); DateAddDay2(); @@ -388,13 +388,13 @@ namespace OrmTest.UnitTest { var x2 = DateTime.Now; Expression> exp = it =>it.Datetime2.Value.AddHours(10) == x2; - SqlServerExpressionContext expContext = new SqlServerExpressionContext(); + OracleExpressionContext expContext = new OracleExpressionContext(); expContext.Resolve(exp, ResolveExpressType.WhereSingle); var value = expContext.Result.GetString(); var pars = expContext.Parameters; - base.Check(value, pars, "((DATEADD(@Const0,@MethodConst1,[Datetime2])) = @Const2 )", new List() { - new SugarParameter("@Const0",DateType.Hour.ToString()),new SugarParameter("@MethodConst1",10) - ,new SugarParameter("@Const2",x2) + base.Check(value, pars, "((DATEADD(:Const0,:MethodConst1,\"DATETIME2\")) = :Const2 )", new List() { + new SugarParameter(":Const0",DateType.Hour.ToString()),new SugarParameter(":MethodConst1",10) + ,new SugarParameter(":Const2",x2) }, "DateAddDay2 error"); } @@ -402,13 +402,13 @@ namespace OrmTest.UnitTest { var x2 = DateTime.Now; Expression> exp = it => x2.AddHours(1) == x2; - SqlServerExpressionContext expContext = new SqlServerExpressionContext(); + OracleExpressionContext expContext = new OracleExpressionContext(); expContext.Resolve(exp, ResolveExpressType.WhereSingle); var value = expContext.Result.GetString(); var pars = expContext.Parameters; - base.Check(value, pars, "((DATEADD(@Const0,@MethodConst2,@MethodConst1)) = @Const3 )", new List() { - new SugarParameter("@Const0",DateType.Hour.ToString()),new SugarParameter("@MethodConst2",1),new SugarParameter("@MethodConst1",x2) - ,new SugarParameter("@Const3",x2) + base.Check(value, pars, "((DATEADD(:Const0,:MethodConst2,:MethodConst1)) = :Const3 )", new List() { + new SugarParameter(":Const0",DateType.Hour.ToString()),new SugarParameter(":MethodConst2",1),new SugarParameter(":MethodConst1",x2) + ,new SugarParameter(":Const3",x2) }, "DateAddDay3 error"); } @@ -416,159 +416,159 @@ namespace OrmTest.UnitTest { var x2 = DateTime.Now; Expression> exp = it => SqlFunc.DateIsSame(x2, x2, DateType.Millisecond); - SqlServerExpressionContext expContext = new SqlServerExpressionContext(); + OracleExpressionContext expContext = new OracleExpressionContext(); expContext.Resolve(exp, ResolveExpressType.WhereSingle); var value = expContext.Result.GetString(); var pars = expContext.Parameters; - base.Check(value, pars, " (DATEDIFF(@MethodConst2,@MethodConst0,@MethodConst1)=0) ", new List() { - new SugarParameter("@MethodConst0",x2),new SugarParameter("@MethodConst1",x2), - new SugarParameter("@MethodConst2",DateType.Millisecond) + base.Check(value, pars, " (DATEDIFF(:MethodConst2,:MethodConst0,:MethodConst1)=0) ", new List() { + new SugarParameter(":MethodConst0",x2),new SugarParameter(":MethodConst1",x2), + new SugarParameter(":MethodConst2",DateType.Millisecond) }, "DateIsSameByType error"); } private void DateIsSameByDay() { var x2 = DateTime.Now; Expression> exp = it => SqlFunc.DateIsSame(x2, x2); - SqlServerExpressionContext expContext = new SqlServerExpressionContext(); + OracleExpressionContext expContext = new OracleExpressionContext(); expContext.Resolve(exp, ResolveExpressType.WhereSingle); var value = expContext.Result.GetString(); var pars = expContext.Parameters; - base.Check(value, pars, "(DATEDIFF(day,@MethodConst0,@MethodConst1)=0) ", new List() { - new SugarParameter("@MethodConst0",x2),new SugarParameter("@MethodConst1",x2) + base.Check(value, pars, "(DATEDIFF(day,:MethodConst0,:MethodConst1)=0) ", new List() { + new SugarParameter(":MethodConst0",x2),new SugarParameter(":MethodConst1",x2) }, "DateIsSameDay error"); } private void Equals() { Expression> exp = it => SqlFunc.Equals(it.Name, "a"); - SqlServerExpressionContext expContext = new SqlServerExpressionContext(); + OracleExpressionContext expContext = new OracleExpressionContext(); expContext.Resolve(exp, ResolveExpressType.WhereSingle); var value = expContext.Result.GetString(); var pars = expContext.Parameters; - base.Check(value, pars, " ([Name] = @MethodConst0) ", new List() { - new SugarParameter("@MethodConst0","a") + base.Check(value, pars, " (\"NAME\" = :MethodConst0) ", new List() { + new SugarParameter(":MethodConst0","a") }, "Equals1 error"); Expression> exp2 = it => SqlFunc.Equals("a", it.Name); - SqlServerExpressionContext expContext2 = new SqlServerExpressionContext(); + OracleExpressionContext expContext2 = new OracleExpressionContext(); expContext2.Resolve(exp2, ResolveExpressType.WhereSingle); var value2 = expContext2.Result.GetString(); var pars2 = expContext2.Parameters; - base.Check(value2, pars2, " (@MethodConst0 = [Name]) ", new List() { - new SugarParameter("@MethodConst0","a") + base.Check(value2, pars2, " (:MethodConst0 = \"NAME\") ", new List() { + new SugarParameter(":MethodConst0","a") }, "Equals2 error"); } private void Equals_2() { Expression> exp = it => SqlFunc.Equals(it.Name, it.Name); - SqlServerExpressionContext expContext = new SqlServerExpressionContext(); + OracleExpressionContext expContext = new OracleExpressionContext(); expContext.Resolve(exp, ResolveExpressType.WhereSingle); var value = expContext.Result.GetString(); var pars = expContext.Parameters; - base.Check(value, pars, " ([Name] = [Name]) ", new List() { - new SugarParameter("@MethodConst0","a") - }, "Equals1 error"); + base.Check(value, pars, " (\"NAME\" = \"NAME\") ", new List() { + new SugarParameter(":MethodConst0","a") + }, "Equals_2 error"); Expression> exp2 = it => SqlFunc.Equals("a", "a2"); - SqlServerExpressionContext expContext2 = new SqlServerExpressionContext(); + OracleExpressionContext expContext2 = new OracleExpressionContext(); expContext2.Resolve(exp2, ResolveExpressType.WhereSingle); var value2 = expContext2.Result.GetString(); var pars2 = expContext2.Parameters; - base.Check(value2, pars2, " (@MethodConst0 = @MethodConst1) ", new List() { - new SugarParameter("@MethodConst0","a"),new SugarParameter("@MethodConst1","a2") + base.Check(value2, pars2, " (:MethodConst0 = :MethodConst1) ", new List() { + new SugarParameter(":MethodConst0","a"),new SugarParameter(":MethodConst1","a2") }, "Equals2 error"); } private void Contains() { Expression> exp = it => SqlFunc.Contains(it.Name, "a"); - SqlServerExpressionContext expContext = new SqlServerExpressionContext(); + OracleExpressionContext expContext = new OracleExpressionContext(); expContext.Resolve(exp, ResolveExpressType.WhereSingle); var value = expContext.Result.GetString(); var pars = expContext.Parameters; - base.Check(value, pars, " ([Name] like '%'+@MethodConst0+'%') ", new List() { - new SugarParameter("@MethodConst0","a") + base.Check(value, pars, " (\"NAME\" like '%'||:MethodConst0||'%') ", new List() { + new SugarParameter(":MethodConst0","a") }, "Contains error"); } private void Contains2(string name="a") { Expression> exp = it => SqlFunc.Contains(it.Name, name); - SqlServerExpressionContext expContext = new SqlServerExpressionContext(); + OracleExpressionContext expContext = new OracleExpressionContext(); expContext.Resolve(exp, ResolveExpressType.WhereSingle); var value = expContext.Result.GetString(); var pars = expContext.Parameters; - base.Check(value, pars, " ([Name] like '%'+@MethodConst0+'%') ", new List() { - new SugarParameter("@MethodConst0","a") + base.Check(value, pars, " (\"NAME\" like '%'||:MethodConst0||'%') ", new List() { + new SugarParameter(":MethodConst0","a") }, "Contains2 error"); } private void Contains3(string name = "a") { Expression> exp = it => !SqlFunc.Contains(it.Name, name)&&it.Id==1; - SqlServerExpressionContext expContext = new SqlServerExpressionContext(); + OracleExpressionContext expContext = new OracleExpressionContext(); expContext.Resolve(exp, ResolveExpressType.WhereSingle); var value = expContext.Result.GetString(); var pars = expContext.Parameters; - base.Check(value, pars, "(NOT ([Name] like '%'+@MethodConst0+'%') AND( [Id] = @Id1 ))", new List() { - new SugarParameter("@MethodConst0","a"), - new SugarParameter("@Id1",1) + base.Check(value, pars, "(NOT (\"NAME\" like '%'||:MethodConst0||'%') AND( \"ID\" = :Id1 ))", new List() { + new SugarParameter(":MethodConst0","a"), + new SugarParameter(":Id1",1) }, "Contains3 error"); } private void ExtendContainsArray() { var array = new string[] { "1", "2" }.ToList(); Expression> exp = it => array.Contains(it.Name); - SqlServerExpressionContext expContext = new SqlServerExpressionContext(); + OracleExpressionContext expContext = new OracleExpressionContext(); expContext.Resolve(exp, ResolveExpressType.WhereSingle); var value = expContext.Result.GetString(); var pars = expContext.Parameters; - base.Check(value, null, " ([Name] IN ('1','2')) ", null, "Contains2 error"); + base.Check(value, null, " (\"NAME\" IN ('1','2')) ", null, "Contains2 error"); } private void ContainsArray() { string[] array = new string[] { "1", "2" }; Expression> exp = it => SqlFunc.ContainsArray(array, it.Name); - SqlServerExpressionContext expContext = new SqlServerExpressionContext(); + OracleExpressionContext expContext = new OracleExpressionContext(); expContext.Resolve(exp, ResolveExpressType.WhereSingle); var value = expContext.Result.GetString(); var pars = expContext.Parameters; - base.Check(value, null, " ([Name] IN ('1','2')) ", null, "Contains2 error"); + base.Check(value, null, " (\"NAME\" IN ('1','2')) ", null, "Contains2 error"); } private void Trim() { Expression> exp = it => SqlFunc.Trim(" a") == it.Name; - SqlServerExpressionContext expContext = new SqlServerExpressionContext(); + OracleExpressionContext expContext = new OracleExpressionContext(); expContext.Resolve(exp, ResolveExpressType.WhereSingle); var value = expContext.Result.GetString(); var pars = expContext.Parameters; - base.Check(value, pars, "((rtrim(ltrim(@MethodConst0))) = [Name] )", new List() { - new SugarParameter("@MethodConst0"," a") + base.Check(value, pars, "(trim(:MethodConst0) = \"NAME\" )", new List() { + new SugarParameter(":MethodConst0"," a") }, "Trim error"); } private void ToUpper() { Expression> exp = it => "a" == SqlFunc.ToUpper(it.Id); - SqlServerExpressionContext expContext = new SqlServerExpressionContext(); + OracleExpressionContext expContext = new OracleExpressionContext(); expContext.Resolve(exp, ResolveExpressType.WhereSingle); var value = expContext.Result.GetString(); var pars = expContext.Parameters; - base.Check(value, pars, "( @Const0 = (UPPER([Id])) )", new List() { - new SugarParameter("@Const0","a") + base.Check(value, pars, "( :Const0 = (UPPER(\"ID\")) )", new List() { + new SugarParameter(":Const0","a") }, "ToUpper error"); } private void ToLower() { Expression> exp = it => "a" == SqlFunc.ToLower(it.Id); - SqlServerExpressionContext expContext = new SqlServerExpressionContext(); + OracleExpressionContext expContext = new OracleExpressionContext(); expContext.Resolve(exp, ResolveExpressType.WhereSingle); var value = expContext.Result.GetString(); var pars = expContext.Parameters; - base.Check(value, pars, "( @Const0 = (LOWER([Id])) )", new List() { - new SugarParameter("@Const0","a") + base.Check(value, pars, "( :Const0 = (LOWER(\"ID\")) )", new List() { + new SugarParameter(":Const0","a") }, "ToLower error"); } @@ -576,62 +576,62 @@ namespace OrmTest.UnitTest private void StringIsNullOrEmpty() { Expression> exp = it => it.Id > 2 || SqlFunc.IsNullOrEmpty(it.Id); ; - SqlServerExpressionContext expContext = new SqlServerExpressionContext(); + OracleExpressionContext expContext = new OracleExpressionContext(); expContext.Resolve(exp, ResolveExpressType.WhereSingle); var value = expContext.Result.GetString(); var pars = expContext.Parameters; - base.Check(value, pars, "(( [Id] > @Id0 ) OR ( [Id]='' OR [Id] IS NULL ))", new List() { - new SugarParameter("@Id0",2) + base.Check(value, pars, "(( \"ID\" > :Id0 ) OR ( \"ID\"='' OR \"ID\" IS NULL ))", new List() { + new SugarParameter(":Id0",2) }, "StringIsNullOrEmpty error"); } private void StringIsNullOrEmpty2() { Expression> exp = it => 2 == it.Id || SqlFunc.IsNullOrEmpty(true); ; - SqlServerExpressionContext expContext = new SqlServerExpressionContext(); + OracleExpressionContext expContext = new OracleExpressionContext(); expContext.Resolve(exp, ResolveExpressType.WhereSingle); var value = expContext.Result.GetString(); var pars = expContext.Parameters; - base.Check(value, pars, "(( @Id0 = [Id] ) OR ( @MethodConst1='' OR @MethodConst1 IS NULL ))", new List() { - new SugarParameter("@MethodConst1",true), - new SugarParameter("@Id0",2) + base.Check(value, pars, "(( :Id0 = \"ID\" ) OR ( :MethodConst1='' OR :MethodConst1 IS NULL ))", new List() { + new SugarParameter(":MethodConst1",true), + new SugarParameter(":Id0",2) }, "StringIsNullOrEmpty2 error"); } private void StringIsNullOrEmpty3() { int a = 1; Expression> exp = it => 2 == it.Id || SqlFunc.IsNullOrEmpty(a); ; - SqlServerExpressionContext expContext = new SqlServerExpressionContext(); + OracleExpressionContext expContext = new OracleExpressionContext(); expContext.Resolve(exp, ResolveExpressType.WhereSingle); var value = expContext.Result.GetString(); var pars = expContext.Parameters; - base.Check(value, pars, "(( @Id0 = [Id] ) OR ( @MethodConst1='' OR @MethodConst1 IS NULL ))", new List() { - new SugarParameter("@MethodConst1",1), - new SugarParameter("@Id0",2) + base.Check(value, pars, "(( :Id0 = \"ID\" ) OR ( :MethodConst1='' OR :MethodConst1 IS NULL ))", new List() { + new SugarParameter(":MethodConst1",1), + new SugarParameter(":Id0",2) }, "StringIsNullOrEmpty3 error"); } private void StringIsNullOrEmpty4() { WhereConst.name = "xx"; Expression> exp = it => 2 == it.Id || SqlFunc.IsNullOrEmpty(WhereConst.name); ; - SqlServerExpressionContext expContext = new SqlServerExpressionContext(); + OracleExpressionContext expContext = new OracleExpressionContext(); expContext.Resolve(exp, ResolveExpressType.WhereSingle); var value = expContext.Result.GetString(); var pars = expContext.Parameters; - base.Check(value, pars, "(( @Id0 = [Id] ) OR ( @MethodConst1='' OR @MethodConst1 IS NULL ))", new List() { - new SugarParameter("@MethodConst1","xx"), - new SugarParameter("@Id0",2) + base.Check(value, pars, "(( :Id0 = \"ID\" ) OR ( :MethodConst1='' OR :MethodConst1 IS NULL ))", new List() { + new SugarParameter(":MethodConst1","xx"), + new SugarParameter(":Id0",2) }, "StringIsNullOrEmpty4 error"); } private void StringIsNullOrEmpty5() { WhereConst.name = "xx"; Expression> exp = it => !SqlFunc.IsNullOrEmpty(WhereConst.name); ; - SqlServerExpressionContext expContext = new SqlServerExpressionContext(); + OracleExpressionContext expContext = new OracleExpressionContext(); expContext.Resolve(exp, ResolveExpressType.WhereSingle); var value = expContext.Result.GetString(); var pars = expContext.Parameters; - base.Check(value, pars, "NOT( @MethodConst0='' OR @MethodConst0 IS NULL )", new List() { - new SugarParameter("@MethodConst0","xx") + base.Check(value, pars, "NOT( :MethodConst0='' OR :MethodConst0 IS NULL )", new List() { + new SugarParameter(":MethodConst0","xx") }, "StringIsNullOrEmpty5 error"); } #endregion @@ -639,11 +639,11 @@ namespace OrmTest.UnitTest private void HasValue() { Expression> exp = it => SqlFunc.HasValue(it.Name); - SqlServerExpressionContext expContext = new SqlServerExpressionContext(); + OracleExpressionContext expContext = new OracleExpressionContext(); expContext.Resolve(exp, ResolveExpressType.WhereSingle); var value = expContext.Result.GetString(); var pars = expContext.Parameters; - base.Check(value, pars, "( [Name]<>'' AND [Name] IS NOT NULL )", new List() + base.Check(value, pars, "( \"NAME\"<>'' AND \"NAME\" IS NOT NULL )", new List() { }, "HasValue error"); @@ -652,11 +652,11 @@ namespace OrmTest.UnitTest private void HasNumber() { Expression> exp = it => SqlFunc.HasNumber(it.Id); - SqlServerExpressionContext expContext = new SqlServerExpressionContext(); + OracleExpressionContext expContext = new OracleExpressionContext(); expContext.Resolve(exp, ResolveExpressType.WhereSingle); var value = expContext.Result.GetString(); var pars = expContext.Parameters; - base.Check(value, pars, "( [Id]>0 AND [Id] IS NOT NULL )", new List() + base.Check(value, pars, "( \"ID\">0 AND \"ID\" IS NOT NULL )", new List() { @@ -664,44 +664,44 @@ namespace OrmTest.UnitTest } private void MappingColumn() { Expression> exp = it => SqlFunc.MappingColumn(it.Id,"Name") == 1; - SqlServerExpressionContext expContext = new SqlServerExpressionContext(); + OracleExpressionContext expContext = new OracleExpressionContext(); expContext.Resolve(exp, ResolveExpressType.WhereSingle); var value = expContext.Result.GetString(); var pars = expContext.Parameters; - base.Check(value, pars, "(Name = @Const1 )", new List() + base.Check(value, pars, "(Name = :Const1 )", new List() { - new SugarParameter("@Const1",1) + new SugarParameter(":Const1",1) }, "MappingColumn error"); } private void IIF() { Expression> exp = it => SqlFunc.IIF(it.Id == 1, 1, 2)==1; - SqlServerExpressionContext expContext = new SqlServerExpressionContext(); + OracleExpressionContext expContext = new OracleExpressionContext(); expContext.Resolve(exp, ResolveExpressType.WhereSingle); var value = expContext.Result.GetString(); var pars = expContext.Parameters; - base.Check(value, pars, "(( CASE WHEN ( [Id] = @Id0 ) THEN @MethodConst1 ELSE @MethodConst2 END ) = @Const3 )", new List() + base.Check(value, pars, "(( CASE WHEN ( \"ID\" = :Id0 ) THEN :MethodConst1 ELSE :MethodConst2 END ) = :Const3 )", new List() { - new SugarParameter("@Id0",1), - new SugarParameter("@MethodConst1",1), - new SugarParameter("@MethodConst2",2), - new SugarParameter("@Const3",1) + new SugarParameter(":Id0",1), + new SugarParameter(":MethodConst1",1), + new SugarParameter(":MethodConst2",2), + new SugarParameter(":Const3",1) }, "IIF error"); } private void IIF2() { Expression> exp = it => SqlFunc.IIF(SqlFunc.Contains(it.Name,"a"), 1, 2)==1; - SqlServerExpressionContext expContext = new SqlServerExpressionContext(); + OracleExpressionContext expContext = new OracleExpressionContext(); expContext.Resolve(exp, ResolveExpressType.WhereSingle); var value = expContext.Result.GetString(); var pars = expContext.Parameters; - base.Check(value, pars, "(( CASE WHEN ([Name] like '%'+@MethodConst0+'%') THEN @MethodConst1 ELSE @MethodConst2 END ) = @Const3 )", new List() + base.Check(value, pars, "(( CASE WHEN (\"NAME\" like '%'||:MethodConst0||'%') THEN :MethodConst1 ELSE :MethodConst2 END ) = :Const3 )", new List() { - new SugarParameter("@MethodConst0","a"), - new SugarParameter("@MethodConst1",1), - new SugarParameter("@MethodConst2",2), - new SugarParameter("@Const3",1) + new SugarParameter(":MethodConst0","a"), + new SugarParameter(":MethodConst1",1), + new SugarParameter(":MethodConst2",2), + new SugarParameter(":Const3",1) }, "IIF2 error"); } } diff --git a/Src/Asp.Net/SqlSugar/Realization/Oracle/SqlBuilder/OracleExpressionContext.cs b/Src/Asp.Net/SqlSugar/Realization/Oracle/SqlBuilder/OracleExpressionContext.cs index 3f79c74ab..f6dd5c583 100644 --- a/Src/Asp.Net/SqlSugar/Realization/Oracle/SqlBuilder/OracleExpressionContext.cs +++ b/Src/Asp.Net/SqlSugar/Realization/Oracle/SqlBuilder/OracleExpressionContext.cs @@ -14,7 +14,7 @@ namespace SqlSugar public SqlSugarClient Context { get; set; } public OracleExpressionContext() { - base.DbMehtods = new MySqlMethod(); + base.DbMehtods = new OracleMethod(); } public override string SqlParameterKeyWord { @@ -40,6 +40,39 @@ namespace SqlSugar } public partial class OracleMethod : DefaultDbMethod, IDbMethods { + public override string ToString(MethodCallExpressionModel model) + { + var parameter = model.Args[0]; + return string.Format(" CAST({0} AS VARCHAR2(4000))", parameter.MemberName); + } + public override string ToDate(MethodCallExpressionModel model) + { + var parameter = model.Args[0]; + return string.Format(" CAST({0} AS DATE)", parameter.MemberName); + } + public override string Contains(MethodCallExpressionModel model) + { + var parameter = model.Args[0]; + var parameter2 = model.Args[1]; + return string.Format(" ({0} like '%'||{1}||'%') ", parameter.MemberName, parameter2.MemberName); + } + public override string StartsWith(MethodCallExpressionModel model) + { + var parameter = model.Args[0]; + var parameter2 = model.Args[1]; + return string.Format(" ({0} like {1}||'%') ", parameter.MemberName, parameter2.MemberName); + } + public override string EndsWith(MethodCallExpressionModel model) + { + var parameter = model.Args[0]; + var parameter2 = model.Args[1]; + return string.Format(" ({0} like '%'||{1}) ", parameter.MemberName, parameter2.MemberName); + } + public override string Trim(MethodCallExpressionModel model) + { + var parameter = model.Args[0]; + return string.Format(" trim({0}) ", parameter.MemberName); + } } }