Update Oracle

This commit is contained in:
sunkaixuan 2017-09-24 18:32:15 +08:00
parent 8de0a50b64
commit 552fa6ff41
3 changed files with 197 additions and 164 deletions

View File

@ -22,8 +22,8 @@ namespace OrmTest
// /***Unit Test***/ // /***Unit Test***/
new Select(1).Init(); new Select(1).Init();
new Field(1).Init(); new Field(1).Init();
new Where(1).Init(); // new Where(1).Init();
//new Method(1).Init(); new Method(1).Init();
//new JoinQuery(1).Init(); //new JoinQuery(1).Init();
//new SingleQuery(1).Init(); //new SingleQuery(1).Init();
//new SelectQuery(1).Init(); //new SelectQuery(1).Init();

View File

@ -78,24 +78,24 @@ namespace OrmTest.UnitTest
private void ExtendToString() private void ExtendToString()
{ {
Expression<Func<Student, bool>> exp = it => it.Id.ToString() == "a"; Expression<Func<Student, bool>> exp = it => it.Id.ToString() == "a";
SqlServerExpressionContext expContext = new SqlServerExpressionContext(); OracleExpressionContext expContext = new OracleExpressionContext();
expContext.Resolve(exp, ResolveExpressType.WhereSingle); expContext.Resolve(exp, ResolveExpressType.WhereSingle);
var value = expContext.Result.GetString(); var value = expContext.Result.GetString();
var pars = expContext.Parameters; var pars = expContext.Parameters;
base.Check(value, pars, "(CAST([Id] AS NVARCHAR(MAX)) = @Const0 )", new List<SugarParameter>() { base.Check(value, pars, "(CAST(\"ID\" AS VARCHAR2(4000)) = :Const0 )", new List<SugarParameter>() {
new SugarParameter("@Const0","a") new SugarParameter(":Const0","a")
}, "ExtendToString error"); }, "ExtendToString error");
} }
private void ConvetToString() private void ConvetToString()
{ {
Expression<Func<Student, bool>> exp = it => Convert.ToString(it.Id) == "a"; Expression<Func<Student, bool>> exp = it => Convert.ToString(it.Id) == "a";
SqlServerExpressionContext expContext = new SqlServerExpressionContext(); OracleExpressionContext expContext = new OracleExpressionContext();
expContext.Resolve(exp, ResolveExpressType.WhereSingle); expContext.Resolve(exp, ResolveExpressType.WhereSingle);
var value = expContext.Result.GetString(); var value = expContext.Result.GetString();
var pars = expContext.Parameters; var pars = expContext.Parameters;
base.Check(value, pars, "(CAST([Id] AS NVARCHAR(MAX)) = @Const0 )", new List<SugarParameter>() { base.Check(value, pars, "(CAST(\"ID\" AS VARCHAR2(4000)) = :Const0 )", new List<SugarParameter>() {
new SugarParameter("@Const0","a") new SugarParameter(":Const0","a")
}, "ConvetToString error"); }, "ConvetToString error");
} }
@ -103,12 +103,12 @@ namespace OrmTest.UnitTest
private void Length() private void Length()
{ {
Expression<Func<Student, bool>> exp = it => SqlFunc.Length("aaaa") > 1; Expression<Func<Student, bool>> exp = it => SqlFunc.Length("aaaa") > 1;
SqlServerExpressionContext expContext = new SqlServerExpressionContext(); OracleExpressionContext expContext = new OracleExpressionContext();
expContext.Resolve(exp, ResolveExpressType.WhereSingle); expContext.Resolve(exp, ResolveExpressType.WhereSingle);
var value = expContext.Result.GetString(); var value = expContext.Result.GetString();
var pars = expContext.Parameters; var pars = expContext.Parameters;
base.Check(value, pars, "(LEN(@MethodConst0) > @Const1 )", new List<SugarParameter>() { base.Check(value, pars, "(LEN(:MethodConst0) > :Const1 )", new List<SugarParameter>() {
new SugarParameter("@MethodConst0","aaaa"),new SugarParameter("@Const1",1) new SugarParameter(":MethodConst0","aaaa"),new SugarParameter(":Const1",1)
}, "Length error"); }, "Length error");
Length2(); Length2();
@ -118,24 +118,24 @@ namespace OrmTest.UnitTest
private void Length2() private void Length2()
{ {
Expression<Func<Student, bool>> exp = it => it.Name.Length > 1; Expression<Func<Student, bool>> exp = it => it.Name.Length > 1;
SqlServerExpressionContext expContext = new SqlServerExpressionContext(); OracleExpressionContext expContext = new OracleExpressionContext();
expContext.Resolve(exp, ResolveExpressType.WhereSingle); expContext.Resolve(exp, ResolveExpressType.WhereSingle);
var value = expContext.Result.GetString(); var value = expContext.Result.GetString();
var pars = expContext.Parameters; var pars = expContext.Parameters;
base.Check(value, pars, "(LEN([Name])> @Length1 )", new List<SugarParameter>() { base.Check(value, pars, "(LEN(\"Name\")> :Length1 )", new List<SugarParameter>() {
new SugarParameter("@Length1",1) new SugarParameter(":Length1",1)
}, "Length2 error"); }, "Length2 error");
} }
private void Length3() private void Length3()
{ {
Expression<Func<Student, bool>> exp = it => it.Name.Length > "a".Length; Expression<Func<Student, bool>> exp = it => it.Name.Length > "a".Length;
SqlServerExpressionContext expContext = new SqlServerExpressionContext(); OracleExpressionContext expContext = new OracleExpressionContext();
expContext.Resolve(exp, ResolveExpressType.WhereSingle); expContext.Resolve(exp, ResolveExpressType.WhereSingle);
var value = expContext.Result.GetString(); var value = expContext.Result.GetString();
var pars = expContext.Parameters; var pars = expContext.Parameters;
base.Check(value, pars, "(LEN([Name])> @Length1 )", new List<SugarParameter>() { base.Check(value, pars, "(LEN(\"Name\")> :Length1 )", new List<SugarParameter>() {
new SugarParameter("@Length1",1) new SugarParameter(":Length1",1)
}, "Length3 error"); }, "Length3 error");
} }
@ -143,12 +143,12 @@ namespace OrmTest.UnitTest
{ {
TimeSpan s = TimeSpan.Parse("11:22:22"); TimeSpan s = TimeSpan.Parse("11:22:22");
Expression<Func<Student, bool>> exp = it => SqlFunc.ToTime("11:12:59")==s; Expression<Func<Student, bool>> exp = it => SqlFunc.ToTime("11:12:59")==s;
SqlServerExpressionContext expContext = new SqlServerExpressionContext(); OracleExpressionContext expContext = new OracleExpressionContext();
expContext.Resolve(exp, ResolveExpressType.WhereSingle); expContext.Resolve(exp, ResolveExpressType.WhereSingle);
var value = expContext.Result.GetString(); var value = expContext.Result.GetString();
var pars = expContext.Parameters; var pars = expContext.Parameters;
base.Check(value, pars, "(CAST(@MethodConst0 AS TIME) = @Const1 )", new List<SugarParameter>() { base.Check(value, pars, "(CAST(:MethodConst0 AS TIME) = :Const1 )", new List<SugarParameter>() {
new SugarParameter("@MethodConst0","11:12:59"),new SugarParameter("@Const1",s) new SugarParameter(":MethodConst0","11:12:59"),new SugarParameter(":Const1",s)
}, "Time error"); }, "Time error");
} }
@ -157,12 +157,12 @@ namespace OrmTest.UnitTest
{ {
var x2 = Guid.NewGuid(); var x2 = Guid.NewGuid();
Expression<Func<Student, bool>> exp = it => SqlFunc.Replace("aaaa", "a", "1") == "a"; Expression<Func<Student, bool>> exp = it => SqlFunc.Replace("aaaa", "a", "1") == "a";
SqlServerExpressionContext expContext = new SqlServerExpressionContext(); OracleExpressionContext expContext = new OracleExpressionContext();
expContext.Resolve(exp, ResolveExpressType.WhereSingle); expContext.Resolve(exp, ResolveExpressType.WhereSingle);
var value = expContext.Result.GetString(); var value = expContext.Result.GetString();
var pars = expContext.Parameters; var pars = expContext.Parameters;
base.Check(value, pars, "(REPLACE(@MethodConst0,@MethodConst1,@MethodConst2) = @Const3 )", new List<SugarParameter>() { base.Check(value, pars, "(REPLACE(:MethodConst0,:MethodConst1,:MethodConst2) = :Const3 )", new List<SugarParameter>() {
new SugarParameter("@MethodConst0","aaaa"), new SugarParameter("@MethodConst1","a") , new SugarParameter("@MethodConst2","1"),new SugarParameter("@Const3","a") new SugarParameter(":MethodConst0","aaaa"), new SugarParameter(":MethodConst1","a") , new SugarParameter(":MethodConst2","1"),new SugarParameter(":Const3","a")
}, "Replace error"); }, "Replace error");
} }
@ -170,24 +170,24 @@ namespace OrmTest.UnitTest
{ {
var x2 = Guid.NewGuid(); var x2 = Guid.NewGuid();
Expression<Func<Student, bool>> exp = it => SqlFunc.Substring("aaaa", 0, 2) == "a"; Expression<Func<Student, bool>> exp = it => SqlFunc.Substring("aaaa", 0, 2) == "a";
SqlServerExpressionContext expContext = new SqlServerExpressionContext(); OracleExpressionContext expContext = new OracleExpressionContext();
expContext.Resolve(exp, ResolveExpressType.WhereSingle); expContext.Resolve(exp, ResolveExpressType.WhereSingle);
var value = expContext.Result.GetString(); var value = expContext.Result.GetString();
var pars = expContext.Parameters; var pars = expContext.Parameters;
base.Check(value, pars, "(SUBSTRING(@MethodConst0,1 + @MethodConst1,@MethodConst2) = @Const3 )", new List<SugarParameter>() { base.Check(value, pars, "(SUBSTRING(:MethodConst0,1 + :MethodConst1,:MethodConst2) = :Const3 )", new List<SugarParameter>() {
new SugarParameter("@MethodConst0","aaaa"), new SugarParameter("@MethodConst1",0) , new SugarParameter("@MethodConst2",2),new SugarParameter("@Const3","a") new SugarParameter(":MethodConst0","aaaa"), new SugarParameter(":MethodConst1",0) , new SugarParameter(":MethodConst2",2),new SugarParameter(":Const3","a")
}, "Substring error"); }, "Substring error");
} }
private void ExtendSubstring() private void ExtendSubstring()
{ {
var x2 = Guid.NewGuid(); var x2 = Guid.NewGuid();
Expression<Func<Student, bool>> exp = it =>"aaaa".Substring(0, 2)== "a"; Expression<Func<Student, bool>> exp = it =>"aaaa".Substring(0, 2)== "a";
SqlServerExpressionContext expContext = new SqlServerExpressionContext(); OracleExpressionContext expContext = new OracleExpressionContext();
expContext.Resolve(exp, ResolveExpressType.WhereSingle); expContext.Resolve(exp, ResolveExpressType.WhereSingle);
var value = expContext.Result.GetString(); var value = expContext.Result.GetString();
var pars = expContext.Parameters; var pars = expContext.Parameters;
base.Check(value, pars, "(SUBSTRING(@MethodConst0,1 + @MethodConst1,@MethodConst2) = @Const3 )", new List<SugarParameter>() { base.Check(value, pars, "(SUBSTRING(:MethodConst0,1 + :MethodConst1,:MethodConst2) = :Const3 )", new List<SugarParameter>() {
new SugarParameter("@MethodConst0","aaaa"), new SugarParameter("@MethodConst1",0) , new SugarParameter("@MethodConst2",2),new SugarParameter("@Const3","a") new SugarParameter(":MethodConst0","aaaa"), new SugarParameter(":MethodConst1",0) , new SugarParameter(":MethodConst2",2),new SugarParameter(":Const3","a")
}, "Substring error"); }, "Substring error");
} }
@ -196,12 +196,12 @@ namespace OrmTest.UnitTest
{ {
var x2 = Guid.NewGuid(); var x2 = Guid.NewGuid();
Expression<Func<Student, bool>> exp = it => SqlFunc.ToBool("true") == true; Expression<Func<Student, bool>> exp = it => SqlFunc.ToBool("true") == true;
SqlServerExpressionContext expContext = new SqlServerExpressionContext(); OracleExpressionContext expContext = new OracleExpressionContext();
expContext.Resolve(exp, ResolveExpressType.WhereSingle); expContext.Resolve(exp, ResolveExpressType.WhereSingle);
var value = expContext.Result.GetString(); var value = expContext.Result.GetString();
var pars = expContext.Parameters; var pars = expContext.Parameters;
base.Check(value, pars, "(CAST(@MethodConst0 AS BIT) = @Const1 )", new List<SugarParameter>() { base.Check(value, pars, "(CAST(:MethodConst0 AS BIT) = :Const1 )", new List<SugarParameter>() {
new SugarParameter("@MethodConst0","true"),new SugarParameter("@Const1",(bool)true) new SugarParameter(":MethodConst0","true"),new SugarParameter(":Const1",(bool)true)
}, "ToBool error"); }, "ToBool error");
} }
@ -209,12 +209,12 @@ namespace OrmTest.UnitTest
{ {
var x2 = Guid.NewGuid(); var x2 = Guid.NewGuid();
Expression<Func<Student, bool>> exp = it => SqlFunc.ToDouble("2") == 2; Expression<Func<Student, bool>> exp = it => SqlFunc.ToDouble("2") == 2;
SqlServerExpressionContext expContext = new SqlServerExpressionContext(); OracleExpressionContext expContext = new OracleExpressionContext();
expContext.Resolve(exp, ResolveExpressType.WhereSingle); expContext.Resolve(exp, ResolveExpressType.WhereSingle);
var value = expContext.Result.GetString(); var value = expContext.Result.GetString();
var pars = expContext.Parameters; var pars = expContext.Parameters;
base.Check(value, pars, "(CAST(@MethodConst0 AS FLOAT) = @Const1 )", new List<SugarParameter>() { base.Check(value, pars, "(CAST(:MethodConst0 AS FLOAT) = :Const1 )", new List<SugarParameter>() {
new SugarParameter("@MethodConst0","2"),new SugarParameter("@Const1",(Double)2) new SugarParameter(":MethodConst0","2"),new SugarParameter(":Const1",(Double)2)
}, "ToDouble error"); }, "ToDouble error");
} }
@ -222,12 +222,12 @@ namespace OrmTest.UnitTest
{ {
var x2 = Guid.NewGuid(); var x2 = Guid.NewGuid();
Expression<Func<Student, bool>> exp = it => SqlFunc.ToGuid("A94027A3-476E-478D-8228-F4054394B874") == x2; Expression<Func<Student, bool>> exp = it => SqlFunc.ToGuid("A94027A3-476E-478D-8228-F4054394B874") == x2;
SqlServerExpressionContext expContext = new SqlServerExpressionContext(); OracleExpressionContext expContext = new OracleExpressionContext();
expContext.Resolve(exp, ResolveExpressType.WhereSingle); expContext.Resolve(exp, ResolveExpressType.WhereSingle);
var value = expContext.Result.GetString(); var value = expContext.Result.GetString();
var pars = expContext.Parameters; var pars = expContext.Parameters;
base.Check(value, pars, "(CAST(@MethodConst0 AS UNIQUEIDENTIFIER) = @Const1 )", new List<SugarParameter>() { base.Check(value, pars, "(CAST(:MethodConst0 AS UNIQUEIDENTIFIER) = :Const1 )", new List<SugarParameter>() {
new SugarParameter("@MethodConst0","A94027A3-476E-478D-8228-F4054394B874"),new SugarParameter("@Const1",x2) new SugarParameter(":MethodConst0","A94027A3-476E-478D-8228-F4054394B874"),new SugarParameter(":Const1",x2)
}, "ToGuid error"); }, "ToGuid error");
} }
@ -235,12 +235,12 @@ namespace OrmTest.UnitTest
{ {
var x2 = DateTime.Now; var x2 = DateTime.Now;
Expression<Func<Student, bool>> exp = it => SqlFunc.ToDecimal("22") == 1; Expression<Func<Student, bool>> exp = it => SqlFunc.ToDecimal("22") == 1;
SqlServerExpressionContext expContext = new SqlServerExpressionContext(); OracleExpressionContext expContext = new OracleExpressionContext();
expContext.Resolve(exp, ResolveExpressType.WhereSingle); expContext.Resolve(exp, ResolveExpressType.WhereSingle);
var value = expContext.Result.GetString(); var value = expContext.Result.GetString();
var pars = expContext.Parameters; var pars = expContext.Parameters;
base.Check(value, pars, "(CAST(@MethodConst0 AS MONEY) = @Const1 )", new List<SugarParameter>() { base.Check(value, pars, "(CAST(:MethodConst0 AS MONEY) = :Const1 )", new List<SugarParameter>() {
new SugarParameter("@MethodConst0","22"),new SugarParameter("@Const1",(decimal)1) new SugarParameter(":MethodConst0","22"),new SugarParameter(":Const1",(decimal)1)
}, "ToDecimal error"); }, "ToDecimal error");
} }
@ -248,12 +248,12 @@ namespace OrmTest.UnitTest
{ {
var x2 = DateTime.Now; var x2 = DateTime.Now;
Expression<Func<Student, bool>> exp = it => SqlFunc.ToString("2015-1-1") == "a"; Expression<Func<Student, bool>> exp = it => SqlFunc.ToString("2015-1-1") == "a";
SqlServerExpressionContext expContext = new SqlServerExpressionContext(); OracleExpressionContext expContext = new OracleExpressionContext();
expContext.Resolve(exp, ResolveExpressType.WhereSingle); expContext.Resolve(exp, ResolveExpressType.WhereSingle);
var value = expContext.Result.GetString(); var value = expContext.Result.GetString();
var pars = expContext.Parameters; var pars = expContext.Parameters;
base.Check(value, pars, "(CAST(@MethodConst0 AS NVARCHAR(MAX)) = @Const1 )", new List<SugarParameter>() { base.Check(value, pars, "(CAST(:MethodConst0 AS NVARCHAR(MAX)) = :Const1 )", new List<SugarParameter>() {
new SugarParameter("@MethodConst0","2015-1-1"),new SugarParameter("@Const1","a") new SugarParameter(":MethodConst0","2015-1-1"),new SugarParameter(":Const1","a")
}, "Tostring error"); }, "Tostring error");
} }
@ -261,24 +261,24 @@ namespace OrmTest.UnitTest
{ {
var x2 = DateTime.Now; var x2 = DateTime.Now;
Expression<Func<Student, bool>> exp = it => SqlFunc.ToDate("2015-1-1") == x2; Expression<Func<Student, bool>> exp = it => SqlFunc.ToDate("2015-1-1") == x2;
SqlServerExpressionContext expContext = new SqlServerExpressionContext(); OracleExpressionContext expContext = new OracleExpressionContext();
expContext.Resolve(exp, ResolveExpressType.WhereSingle); expContext.Resolve(exp, ResolveExpressType.WhereSingle);
var value = expContext.Result.GetString(); var value = expContext.Result.GetString();
var pars = expContext.Parameters; var pars = expContext.Parameters;
base.Check(value, pars, "(CAST(@MethodConst0 AS DATETIME) = @Const1 )", new List<SugarParameter>() { base.Check(value, pars, "(CAST(:MethodConst0 AS DATETIME) = :Const1 )", new List<SugarParameter>() {
new SugarParameter("@MethodConst0","2015-1-1"),new SugarParameter("@Const1",x2) new SugarParameter(":MethodConst0","2015-1-1"),new SugarParameter(":Const1",x2)
}, "ToDate error"); }, "ToDate error");
} }
private void ExtendDate() private void ExtendDate()
{ {
var x2 = DateTime.Now; var x2 = DateTime.Now;
Expression<Func<Student, bool>> exp = it => Convert.ToDateTime("2015-1-1") == x2; Expression<Func<Student, bool>> exp = it => Convert.ToDateTime("2015-1-1") == x2;
SqlServerExpressionContext expContext = new SqlServerExpressionContext(); OracleExpressionContext expContext = new OracleExpressionContext();
expContext.Resolve(exp, ResolveExpressType.WhereSingle); expContext.Resolve(exp, ResolveExpressType.WhereSingle);
var value = expContext.Result.GetString(); var value = expContext.Result.GetString();
var pars = expContext.Parameters; var pars = expContext.Parameters;
base.Check(value, pars, "(CAST(@MethodConst0 AS DATETIME) = @Const1 )", new List<SugarParameter>() { base.Check(value, pars, "(CAST(:MethodConst0 AS DATE) = :Const1 )", new List<SugarParameter>() {
new SugarParameter("@MethodConst0","2015-1-1"),new SugarParameter("@Const1",x2) new SugarParameter(":MethodConst0","2015-1-1"),new SugarParameter(":Const1",x2)
}, "ExtendDate error"); }, "ExtendDate error");
} }
@ -286,12 +286,12 @@ namespace OrmTest.UnitTest
{ {
var x2 = DateTime.Now; var x2 = DateTime.Now;
Expression<Func<Student, bool>> exp = it => SqlFunc.ToInt64("3") == 1; Expression<Func<Student, bool>> exp = it => SqlFunc.ToInt64("3") == 1;
SqlServerExpressionContext expContext = new SqlServerExpressionContext(); OracleExpressionContext expContext = new OracleExpressionContext();
expContext.Resolve(exp, ResolveExpressType.WhereSingle); expContext.Resolve(exp, ResolveExpressType.WhereSingle);
var value = expContext.Result.GetString(); var value = expContext.Result.GetString();
var pars = expContext.Parameters; var pars = expContext.Parameters;
base.Check(value, pars, "(CAST(@MethodConst0 AS BIGINT) = @Const1 )", new List<SugarParameter>() { base.Check(value, pars, "(CAST(:MethodConst0 AS BIGINT) = :Const1 )", new List<SugarParameter>() {
new SugarParameter("@MethodConst0","3"),new SugarParameter("@Const1",(Int64)1) new SugarParameter(":MethodConst0","3"),new SugarParameter(":Const1",(Int64)1)
}, "ToInt64 error"); }, "ToInt64 error");
} }
@ -299,12 +299,12 @@ namespace OrmTest.UnitTest
{ {
var x2 = DateTime.Now; var x2 = DateTime.Now;
Expression<Func<Student, bool>> exp = it => SqlFunc.ToInt32("3") == 1; Expression<Func<Student, bool>> exp = it => SqlFunc.ToInt32("3") == 1;
SqlServerExpressionContext expContext = new SqlServerExpressionContext(); OracleExpressionContext expContext = new OracleExpressionContext();
expContext.Resolve(exp, ResolveExpressType.WhereSingle); expContext.Resolve(exp, ResolveExpressType.WhereSingle);
var value = expContext.Result.GetString(); var value = expContext.Result.GetString();
var pars = expContext.Parameters; var pars = expContext.Parameters;
base.Check(value, pars, "(CAST(@MethodConst0 AS INT) = @Const1 )", new List<SugarParameter>() { base.Check(value, pars, "(CAST(:MethodConst0 AS INT) = :Const1 )", new List<SugarParameter>() {
new SugarParameter("@MethodConst0","3"),new SugarParameter("@Const1",1) new SugarParameter(":MethodConst0","3"),new SugarParameter(":Const1",1)
}, "ToInt32 error"); }, "ToInt32 error");
} }
@ -312,46 +312,46 @@ namespace OrmTest.UnitTest
{ {
var x2 = DateTime.Now; var x2 = DateTime.Now;
Expression<Func<Student, bool>> exp = it => SqlFunc.DateValue(x2, DateType.Year) == 1; Expression<Func<Student, bool>> exp = it => SqlFunc.DateValue(x2, DateType.Year) == 1;
SqlServerExpressionContext expContext = new SqlServerExpressionContext(); OracleExpressionContext expContext = new OracleExpressionContext();
expContext.Resolve(exp, ResolveExpressType.WhereSingle); expContext.Resolve(exp, ResolveExpressType.WhereSingle);
var value = expContext.Result.GetString(); var value = expContext.Result.GetString();
var pars = expContext.Parameters; var pars = expContext.Parameters;
base.Check(value, pars, " ((@MethodConst1(@MethodConst0)) = @Const2 ) ", new List<SugarParameter>() { base.Check(value, pars, " ((:MethodConst1(:MethodConst0)) = :Const2 ) ", new List<SugarParameter>() {
new SugarParameter("@MethodConst0",x2),new SugarParameter("@MethodConst1",DateType.Year),new SugarParameter("@Const2",1) new SugarParameter(":MethodConst0",x2),new SugarParameter(":MethodConst1",DateType.Year),new SugarParameter(":Const2",1)
}, "DateValue error"); }, "DateValue error");
} }
private void StartsWith() private void StartsWith()
{ {
Expression<Func<Student, bool>> exp = it => SqlFunc.StartsWith(it.Name, "a"); Expression<Func<Student, bool>> exp = it => SqlFunc.StartsWith(it.Name, "a");
SqlServerExpressionContext expContext = new SqlServerExpressionContext(); OracleExpressionContext expContext = new OracleExpressionContext();
expContext.Resolve(exp, ResolveExpressType.WhereSingle); expContext.Resolve(exp, ResolveExpressType.WhereSingle);
var value = expContext.Result.GetString(); var value = expContext.Result.GetString();
var pars = expContext.Parameters; var pars = expContext.Parameters;
base.Check(value, pars, " ([Name] like @MethodConst0+'%') ", new List<SugarParameter>() { base.Check(value, pars, " (\"NAME\" like :MethodConst0||'%') ", new List<SugarParameter>() {
new SugarParameter("@MethodConst0","a") new SugarParameter(":MethodConst0","a")
}, "StartsWith error"); }, "StartsWith error");
} }
private void EndsWith() private void EndsWith()
{ {
Expression<Func<Student, bool>> exp = it => SqlFunc.EndsWith(it.Name, "a"); Expression<Func<Student, bool>> exp = it => SqlFunc.EndsWith(it.Name, "a");
SqlServerExpressionContext expContext = new SqlServerExpressionContext(); OracleExpressionContext expContext = new OracleExpressionContext();
expContext.Resolve(exp, ResolveExpressType.WhereSingle); expContext.Resolve(exp, ResolveExpressType.WhereSingle);
var value = expContext.Result.GetString(); var value = expContext.Result.GetString();
var pars = expContext.Parameters; var pars = expContext.Parameters;
base.Check(value, pars, " ([Name] like '%'+@MethodConst0) ", new List<SugarParameter>() { base.Check(value, pars, " (\"NAME\" like '%'||:MethodConst0) ", new List<SugarParameter>() {
new SugarParameter("@MethodConst0","a") new SugarParameter(":MethodConst0","a")
}, "EndsWith"); }, "EndsWith");
} }
private void Between() private void Between()
{ {
Expression<Func<Student, bool>> exp = it => SqlFunc.Between(it.Name, 1, 2); Expression<Func<Student, bool>> exp = it => SqlFunc.Between(it.Name, 1, 2);
SqlServerExpressionContext expContext = new SqlServerExpressionContext(); OracleExpressionContext expContext = new OracleExpressionContext();
expContext.Resolve(exp, ResolveExpressType.WhereSingle); expContext.Resolve(exp, ResolveExpressType.WhereSingle);
var value = expContext.Result.GetString(); var value = expContext.Result.GetString();
var pars = expContext.Parameters; var pars = expContext.Parameters;
base.Check(value, pars, " ([Name] BETWEEN @MethodConst0 AND @MethodConst1) ", new List<SugarParameter>() { base.Check(value, pars, " (\"NAME\" BETWEEN :MethodConst0 AND :MethodConst1) ", new List<SugarParameter>() {
new SugarParameter("@MethodConst0",1),new SugarParameter("@MethodConst1",2), new SugarParameter(":MethodConst0",1),new SugarParameter(":MethodConst1",2),
}, "Between error"); }, "Between error");
} }
@ -359,25 +359,25 @@ namespace OrmTest.UnitTest
{ {
var x2 = DateTime.Now; var x2 = DateTime.Now;
Expression<Func<Student, bool>> exp = it => SqlFunc.DateAdd(x2, 11, DateType.Millisecond) == x2; Expression<Func<Student, bool>> exp = it => SqlFunc.DateAdd(x2, 11, DateType.Millisecond) == x2;
SqlServerExpressionContext expContext = new SqlServerExpressionContext(); OracleExpressionContext expContext = new OracleExpressionContext();
expContext.Resolve(exp, ResolveExpressType.WhereSingle); expContext.Resolve(exp, ResolveExpressType.WhereSingle);
var value = expContext.Result.GetString(); var value = expContext.Result.GetString();
var pars = expContext.Parameters; var pars = expContext.Parameters;
base.Check(value, pars, "((DATEADD(@MethodConst2,@MethodConst1,@MethodConst0)) = @Const3 )", new List<SugarParameter>() { base.Check(value, pars, "((DATEADD(:MethodConst2,:MethodConst1,:MethodConst0)) = :Const3 )", new List<SugarParameter>() {
new SugarParameter("@MethodConst0",x2),new SugarParameter("@MethodConst1",11),new SugarParameter("@Const3",x2), new SugarParameter(":MethodConst0",x2),new SugarParameter(":MethodConst1",11),new SugarParameter(":Const3",x2),
new SugarParameter("@MethodConst2",DateType.Millisecond) new SugarParameter(":MethodConst2",DateType.Millisecond)
}, "DateAddByType error"); }, "DateAddByType error");
} }
private void DateAddDay() private void DateAddDay()
{ {
var x2 = DateTime.Now; var x2 = DateTime.Now;
Expression<Func<Student, bool>> exp = it => SqlFunc.DateAdd(x2, 1) == x2; Expression<Func<Student, bool>> exp = it => SqlFunc.DateAdd(x2, 1) == x2;
SqlServerExpressionContext expContext = new SqlServerExpressionContext(); OracleExpressionContext expContext = new OracleExpressionContext();
expContext.Resolve(exp, ResolveExpressType.WhereSingle); expContext.Resolve(exp, ResolveExpressType.WhereSingle);
var value = expContext.Result.GetString(); var value = expContext.Result.GetString();
var pars = expContext.Parameters; var pars = expContext.Parameters;
base.Check(value, pars, "((DATEADD(day,@MethodConst1,@MethodConst0)) = @Const2 )", new List<SugarParameter>() { base.Check(value, pars, "((DATEADD(day,:MethodConst1,:MethodConst0)) = :Const2 )", new List<SugarParameter>() {
new SugarParameter("@MethodConst0",x2),new SugarParameter("@MethodConst1",1),new SugarParameter("@Const2",x2) new SugarParameter(":MethodConst0",x2),new SugarParameter(":MethodConst1",1),new SugarParameter(":Const2",x2)
}, "DateAddDay error"); }, "DateAddDay error");
DateAddDay2(); DateAddDay2();
@ -388,13 +388,13 @@ namespace OrmTest.UnitTest
{ {
var x2 = DateTime.Now; var x2 = DateTime.Now;
Expression<Func<DataTestInfo, bool>> exp = it =>it.Datetime2.Value.AddHours(10) == x2; Expression<Func<DataTestInfo, bool>> exp = it =>it.Datetime2.Value.AddHours(10) == x2;
SqlServerExpressionContext expContext = new SqlServerExpressionContext(); OracleExpressionContext expContext = new OracleExpressionContext();
expContext.Resolve(exp, ResolveExpressType.WhereSingle); expContext.Resolve(exp, ResolveExpressType.WhereSingle);
var value = expContext.Result.GetString(); var value = expContext.Result.GetString();
var pars = expContext.Parameters; var pars = expContext.Parameters;
base.Check(value, pars, "((DATEADD(@Const0,@MethodConst1,[Datetime2])) = @Const2 )", new List<SugarParameter>() { base.Check(value, pars, "((DATEADD(:Const0,:MethodConst1,\"DATETIME2\")) = :Const2 )", new List<SugarParameter>() {
new SugarParameter("@Const0",DateType.Hour.ToString()),new SugarParameter("@MethodConst1",10) new SugarParameter(":Const0",DateType.Hour.ToString()),new SugarParameter(":MethodConst1",10)
,new SugarParameter("@Const2",x2) ,new SugarParameter(":Const2",x2)
}, "DateAddDay2 error"); }, "DateAddDay2 error");
} }
@ -402,13 +402,13 @@ namespace OrmTest.UnitTest
{ {
var x2 = DateTime.Now; var x2 = DateTime.Now;
Expression<Func<Student, bool>> exp = it => x2.AddHours(1) == x2; Expression<Func<Student, bool>> exp = it => x2.AddHours(1) == x2;
SqlServerExpressionContext expContext = new SqlServerExpressionContext(); OracleExpressionContext expContext = new OracleExpressionContext();
expContext.Resolve(exp, ResolveExpressType.WhereSingle); expContext.Resolve(exp, ResolveExpressType.WhereSingle);
var value = expContext.Result.GetString(); var value = expContext.Result.GetString();
var pars = expContext.Parameters; var pars = expContext.Parameters;
base.Check(value, pars, "((DATEADD(@Const0,@MethodConst2,@MethodConst1)) = @Const3 )", new List<SugarParameter>() { base.Check(value, pars, "((DATEADD(:Const0,:MethodConst2,:MethodConst1)) = :Const3 )", new List<SugarParameter>() {
new SugarParameter("@Const0",DateType.Hour.ToString()),new SugarParameter("@MethodConst2",1),new SugarParameter("@MethodConst1",x2) new SugarParameter(":Const0",DateType.Hour.ToString()),new SugarParameter(":MethodConst2",1),new SugarParameter(":MethodConst1",x2)
,new SugarParameter("@Const3",x2) ,new SugarParameter(":Const3",x2)
}, "DateAddDay3 error"); }, "DateAddDay3 error");
} }
@ -416,159 +416,159 @@ namespace OrmTest.UnitTest
{ {
var x2 = DateTime.Now; var x2 = DateTime.Now;
Expression<Func<Student, bool>> exp = it => SqlFunc.DateIsSame(x2, x2, DateType.Millisecond); Expression<Func<Student, bool>> exp = it => SqlFunc.DateIsSame(x2, x2, DateType.Millisecond);
SqlServerExpressionContext expContext = new SqlServerExpressionContext(); OracleExpressionContext expContext = new OracleExpressionContext();
expContext.Resolve(exp, ResolveExpressType.WhereSingle); expContext.Resolve(exp, ResolveExpressType.WhereSingle);
var value = expContext.Result.GetString(); var value = expContext.Result.GetString();
var pars = expContext.Parameters; var pars = expContext.Parameters;
base.Check(value, pars, " (DATEDIFF(@MethodConst2,@MethodConst0,@MethodConst1)=0) ", new List<SugarParameter>() { base.Check(value, pars, " (DATEDIFF(:MethodConst2,:MethodConst0,:MethodConst1)=0) ", new List<SugarParameter>() {
new SugarParameter("@MethodConst0",x2),new SugarParameter("@MethodConst1",x2), new SugarParameter(":MethodConst0",x2),new SugarParameter(":MethodConst1",x2),
new SugarParameter("@MethodConst2",DateType.Millisecond) new SugarParameter(":MethodConst2",DateType.Millisecond)
}, "DateIsSameByType error"); }, "DateIsSameByType error");
} }
private void DateIsSameByDay() private void DateIsSameByDay()
{ {
var x2 = DateTime.Now; var x2 = DateTime.Now;
Expression<Func<Student, bool>> exp = it => SqlFunc.DateIsSame(x2, x2); Expression<Func<Student, bool>> exp = it => SqlFunc.DateIsSame(x2, x2);
SqlServerExpressionContext expContext = new SqlServerExpressionContext(); OracleExpressionContext expContext = new OracleExpressionContext();
expContext.Resolve(exp, ResolveExpressType.WhereSingle); expContext.Resolve(exp, ResolveExpressType.WhereSingle);
var value = expContext.Result.GetString(); var value = expContext.Result.GetString();
var pars = expContext.Parameters; var pars = expContext.Parameters;
base.Check(value, pars, "(DATEDIFF(day,@MethodConst0,@MethodConst1)=0) ", new List<SugarParameter>() { base.Check(value, pars, "(DATEDIFF(day,:MethodConst0,:MethodConst1)=0) ", new List<SugarParameter>() {
new SugarParameter("@MethodConst0",x2),new SugarParameter("@MethodConst1",x2) new SugarParameter(":MethodConst0",x2),new SugarParameter(":MethodConst1",x2)
}, "DateIsSameDay error"); }, "DateIsSameDay error");
} }
private void Equals() private void Equals()
{ {
Expression<Func<Student, bool>> exp = it => SqlFunc.Equals(it.Name, "a"); Expression<Func<Student, bool>> exp = it => SqlFunc.Equals(it.Name, "a");
SqlServerExpressionContext expContext = new SqlServerExpressionContext(); OracleExpressionContext expContext = new OracleExpressionContext();
expContext.Resolve(exp, ResolveExpressType.WhereSingle); expContext.Resolve(exp, ResolveExpressType.WhereSingle);
var value = expContext.Result.GetString(); var value = expContext.Result.GetString();
var pars = expContext.Parameters; var pars = expContext.Parameters;
base.Check(value, pars, " ([Name] = @MethodConst0) ", new List<SugarParameter>() { base.Check(value, pars, " (\"NAME\" = :MethodConst0) ", new List<SugarParameter>() {
new SugarParameter("@MethodConst0","a") new SugarParameter(":MethodConst0","a")
}, "Equals1 error"); }, "Equals1 error");
Expression<Func<Student, bool>> exp2 = it => SqlFunc.Equals("a", it.Name); Expression<Func<Student, bool>> exp2 = it => SqlFunc.Equals("a", it.Name);
SqlServerExpressionContext expContext2 = new SqlServerExpressionContext(); OracleExpressionContext expContext2 = new OracleExpressionContext();
expContext2.Resolve(exp2, ResolveExpressType.WhereSingle); expContext2.Resolve(exp2, ResolveExpressType.WhereSingle);
var value2 = expContext2.Result.GetString(); var value2 = expContext2.Result.GetString();
var pars2 = expContext2.Parameters; var pars2 = expContext2.Parameters;
base.Check(value2, pars2, " (@MethodConst0 = [Name]) ", new List<SugarParameter>() { base.Check(value2, pars2, " (:MethodConst0 = \"NAME\") ", new List<SugarParameter>() {
new SugarParameter("@MethodConst0","a") new SugarParameter(":MethodConst0","a")
}, "Equals2 error"); }, "Equals2 error");
} }
private void Equals_2() private void Equals_2()
{ {
Expression<Func<Student, bool>> exp = it => SqlFunc.Equals(it.Name, it.Name); Expression<Func<Student, bool>> exp = it => SqlFunc.Equals(it.Name, it.Name);
SqlServerExpressionContext expContext = new SqlServerExpressionContext(); OracleExpressionContext expContext = new OracleExpressionContext();
expContext.Resolve(exp, ResolveExpressType.WhereSingle); expContext.Resolve(exp, ResolveExpressType.WhereSingle);
var value = expContext.Result.GetString(); var value = expContext.Result.GetString();
var pars = expContext.Parameters; var pars = expContext.Parameters;
base.Check(value, pars, " ([Name] = [Name]) ", new List<SugarParameter>() { base.Check(value, pars, " (\"NAME\" = \"NAME\") ", new List<SugarParameter>() {
new SugarParameter("@MethodConst0","a") new SugarParameter(":MethodConst0","a")
}, "Equals1 error"); }, "Equals_2 error");
Expression<Func<Student, bool>> exp2 = it => SqlFunc.Equals("a", "a2"); Expression<Func<Student, bool>> exp2 = it => SqlFunc.Equals("a", "a2");
SqlServerExpressionContext expContext2 = new SqlServerExpressionContext(); OracleExpressionContext expContext2 = new OracleExpressionContext();
expContext2.Resolve(exp2, ResolveExpressType.WhereSingle); expContext2.Resolve(exp2, ResolveExpressType.WhereSingle);
var value2 = expContext2.Result.GetString(); var value2 = expContext2.Result.GetString();
var pars2 = expContext2.Parameters; var pars2 = expContext2.Parameters;
base.Check(value2, pars2, " (@MethodConst0 = @MethodConst1) ", new List<SugarParameter>() { base.Check(value2, pars2, " (:MethodConst0 = :MethodConst1) ", new List<SugarParameter>() {
new SugarParameter("@MethodConst0","a"),new SugarParameter("@MethodConst1","a2") new SugarParameter(":MethodConst0","a"),new SugarParameter(":MethodConst1","a2")
}, "Equals2 error"); }, "Equals2 error");
} }
private void Contains() private void Contains()
{ {
Expression<Func<Student, bool>> exp = it => SqlFunc.Contains(it.Name, "a"); Expression<Func<Student, bool>> exp = it => SqlFunc.Contains(it.Name, "a");
SqlServerExpressionContext expContext = new SqlServerExpressionContext(); OracleExpressionContext expContext = new OracleExpressionContext();
expContext.Resolve(exp, ResolveExpressType.WhereSingle); expContext.Resolve(exp, ResolveExpressType.WhereSingle);
var value = expContext.Result.GetString(); var value = expContext.Result.GetString();
var pars = expContext.Parameters; var pars = expContext.Parameters;
base.Check(value, pars, " ([Name] like '%'+@MethodConst0+'%') ", new List<SugarParameter>() { base.Check(value, pars, " (\"NAME\" like '%'||:MethodConst0||'%') ", new List<SugarParameter>() {
new SugarParameter("@MethodConst0","a") new SugarParameter(":MethodConst0","a")
}, "Contains error"); }, "Contains error");
} }
private void Contains2(string name="a") private void Contains2(string name="a")
{ {
Expression<Func<Student, bool>> exp = it => SqlFunc.Contains(it.Name, name); Expression<Func<Student, bool>> exp = it => SqlFunc.Contains(it.Name, name);
SqlServerExpressionContext expContext = new SqlServerExpressionContext(); OracleExpressionContext expContext = new OracleExpressionContext();
expContext.Resolve(exp, ResolveExpressType.WhereSingle); expContext.Resolve(exp, ResolveExpressType.WhereSingle);
var value = expContext.Result.GetString(); var value = expContext.Result.GetString();
var pars = expContext.Parameters; var pars = expContext.Parameters;
base.Check(value, pars, " ([Name] like '%'+@MethodConst0+'%') ", new List<SugarParameter>() { base.Check(value, pars, " (\"NAME\" like '%'||:MethodConst0||'%') ", new List<SugarParameter>() {
new SugarParameter("@MethodConst0","a") new SugarParameter(":MethodConst0","a")
}, "Contains2 error"); }, "Contains2 error");
} }
private void Contains3(string name = "a") private void Contains3(string name = "a")
{ {
Expression<Func<Student, bool>> exp = it => !SqlFunc.Contains(it.Name, name)&&it.Id==1; Expression<Func<Student, bool>> exp = it => !SqlFunc.Contains(it.Name, name)&&it.Id==1;
SqlServerExpressionContext expContext = new SqlServerExpressionContext(); OracleExpressionContext expContext = new OracleExpressionContext();
expContext.Resolve(exp, ResolveExpressType.WhereSingle); expContext.Resolve(exp, ResolveExpressType.WhereSingle);
var value = expContext.Result.GetString(); var value = expContext.Result.GetString();
var pars = expContext.Parameters; var pars = expContext.Parameters;
base.Check(value, pars, "(NOT ([Name] like '%'+@MethodConst0+'%') AND( [Id] = @Id1 ))", new List<SugarParameter>() { base.Check(value, pars, "(NOT (\"NAME\" like '%'||:MethodConst0||'%') AND( \"ID\" = :Id1 ))", new List<SugarParameter>() {
new SugarParameter("@MethodConst0","a"), new SugarParameter(":MethodConst0","a"),
new SugarParameter("@Id1",1) new SugarParameter(":Id1",1)
}, "Contains3 error"); }, "Contains3 error");
} }
private void ExtendContainsArray() { private void ExtendContainsArray() {
var array = new string[] { "1", "2" }.ToList(); var array = new string[] { "1", "2" }.ToList();
Expression<Func<Student, bool>> exp = it => array.Contains(it.Name); Expression<Func<Student, bool>> exp = it => array.Contains(it.Name);
SqlServerExpressionContext expContext = new SqlServerExpressionContext(); OracleExpressionContext expContext = new OracleExpressionContext();
expContext.Resolve(exp, ResolveExpressType.WhereSingle); expContext.Resolve(exp, ResolveExpressType.WhereSingle);
var value = expContext.Result.GetString(); var value = expContext.Result.GetString();
var pars = expContext.Parameters; 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() private void ContainsArray()
{ {
string[] array = new string[] { "1", "2" }; string[] array = new string[] { "1", "2" };
Expression<Func<Student, bool>> exp = it => SqlFunc.ContainsArray(array, it.Name); Expression<Func<Student, bool>> exp = it => SqlFunc.ContainsArray(array, it.Name);
SqlServerExpressionContext expContext = new SqlServerExpressionContext(); OracleExpressionContext expContext = new OracleExpressionContext();
expContext.Resolve(exp, ResolveExpressType.WhereSingle); expContext.Resolve(exp, ResolveExpressType.WhereSingle);
var value = expContext.Result.GetString(); var value = expContext.Result.GetString();
var pars = expContext.Parameters; 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() private void Trim()
{ {
Expression<Func<Student, bool>> exp = it => SqlFunc.Trim(" a") == it.Name; Expression<Func<Student, bool>> exp = it => SqlFunc.Trim(" a") == it.Name;
SqlServerExpressionContext expContext = new SqlServerExpressionContext(); OracleExpressionContext expContext = new OracleExpressionContext();
expContext.Resolve(exp, ResolveExpressType.WhereSingle); expContext.Resolve(exp, ResolveExpressType.WhereSingle);
var value = expContext.Result.GetString(); var value = expContext.Result.GetString();
var pars = expContext.Parameters; var pars = expContext.Parameters;
base.Check(value, pars, "((rtrim(ltrim(@MethodConst0))) = [Name] )", new List<SugarParameter>() { base.Check(value, pars, "(trim(:MethodConst0) = \"NAME\" )", new List<SugarParameter>() {
new SugarParameter("@MethodConst0"," a") new SugarParameter(":MethodConst0"," a")
}, "Trim error"); }, "Trim error");
} }
private void ToUpper() private void ToUpper()
{ {
Expression<Func<Student, bool>> exp = it => "a" == SqlFunc.ToUpper(it.Id); Expression<Func<Student, bool>> exp = it => "a" == SqlFunc.ToUpper(it.Id);
SqlServerExpressionContext expContext = new SqlServerExpressionContext(); OracleExpressionContext expContext = new OracleExpressionContext();
expContext.Resolve(exp, ResolveExpressType.WhereSingle); expContext.Resolve(exp, ResolveExpressType.WhereSingle);
var value = expContext.Result.GetString(); var value = expContext.Result.GetString();
var pars = expContext.Parameters; var pars = expContext.Parameters;
base.Check(value, pars, "( @Const0 = (UPPER([Id])) )", new List<SugarParameter>() { base.Check(value, pars, "( :Const0 = (UPPER(\"ID\")) )", new List<SugarParameter>() {
new SugarParameter("@Const0","a") new SugarParameter(":Const0","a")
}, "ToUpper error"); }, "ToUpper error");
} }
private void ToLower() private void ToLower()
{ {
Expression<Func<Student, bool>> exp = it => "a" == SqlFunc.ToLower(it.Id); Expression<Func<Student, bool>> exp = it => "a" == SqlFunc.ToLower(it.Id);
SqlServerExpressionContext expContext = new SqlServerExpressionContext(); OracleExpressionContext expContext = new OracleExpressionContext();
expContext.Resolve(exp, ResolveExpressType.WhereSingle); expContext.Resolve(exp, ResolveExpressType.WhereSingle);
var value = expContext.Result.GetString(); var value = expContext.Result.GetString();
var pars = expContext.Parameters; var pars = expContext.Parameters;
base.Check(value, pars, "( @Const0 = (LOWER([Id])) )", new List<SugarParameter>() { base.Check(value, pars, "( :Const0 = (LOWER(\"ID\")) )", new List<SugarParameter>() {
new SugarParameter("@Const0","a") new SugarParameter(":Const0","a")
}, "ToLower error"); }, "ToLower error");
} }
@ -576,62 +576,62 @@ namespace OrmTest.UnitTest
private void StringIsNullOrEmpty() private void StringIsNullOrEmpty()
{ {
Expression<Func<Student, bool>> exp = it => it.Id > 2 || SqlFunc.IsNullOrEmpty(it.Id); ; Expression<Func<Student, bool>> exp = it => it.Id > 2 || SqlFunc.IsNullOrEmpty(it.Id); ;
SqlServerExpressionContext expContext = new SqlServerExpressionContext(); OracleExpressionContext expContext = new OracleExpressionContext();
expContext.Resolve(exp, ResolveExpressType.WhereSingle); expContext.Resolve(exp, ResolveExpressType.WhereSingle);
var value = expContext.Result.GetString(); var value = expContext.Result.GetString();
var pars = expContext.Parameters; var pars = expContext.Parameters;
base.Check(value, pars, "(( [Id] > @Id0 ) OR ( [Id]='' OR [Id] IS NULL ))", new List<SugarParameter>() { base.Check(value, pars, "(( \"ID\" > :Id0 ) OR ( \"ID\"='' OR \"ID\" IS NULL ))", new List<SugarParameter>() {
new SugarParameter("@Id0",2) new SugarParameter(":Id0",2)
}, "StringIsNullOrEmpty error"); }, "StringIsNullOrEmpty error");
} }
private void StringIsNullOrEmpty2() private void StringIsNullOrEmpty2()
{ {
Expression<Func<Student, bool>> exp = it => 2 == it.Id || SqlFunc.IsNullOrEmpty(true); ; Expression<Func<Student, bool>> exp = it => 2 == it.Id || SqlFunc.IsNullOrEmpty(true); ;
SqlServerExpressionContext expContext = new SqlServerExpressionContext(); OracleExpressionContext expContext = new OracleExpressionContext();
expContext.Resolve(exp, ResolveExpressType.WhereSingle); expContext.Resolve(exp, ResolveExpressType.WhereSingle);
var value = expContext.Result.GetString(); var value = expContext.Result.GetString();
var pars = expContext.Parameters; var pars = expContext.Parameters;
base.Check(value, pars, "(( @Id0 = [Id] ) OR ( @MethodConst1='' OR @MethodConst1 IS NULL ))", new List<SugarParameter>() { base.Check(value, pars, "(( :Id0 = \"ID\" ) OR ( :MethodConst1='' OR :MethodConst1 IS NULL ))", new List<SugarParameter>() {
new SugarParameter("@MethodConst1",true), new SugarParameter(":MethodConst1",true),
new SugarParameter("@Id0",2) new SugarParameter(":Id0",2)
}, "StringIsNullOrEmpty2 error"); }, "StringIsNullOrEmpty2 error");
} }
private void StringIsNullOrEmpty3() private void StringIsNullOrEmpty3()
{ {
int a = 1; int a = 1;
Expression<Func<Student, bool>> exp = it => 2 == it.Id || SqlFunc.IsNullOrEmpty(a); ; Expression<Func<Student, bool>> exp = it => 2 == it.Id || SqlFunc.IsNullOrEmpty(a); ;
SqlServerExpressionContext expContext = new SqlServerExpressionContext(); OracleExpressionContext expContext = new OracleExpressionContext();
expContext.Resolve(exp, ResolveExpressType.WhereSingle); expContext.Resolve(exp, ResolveExpressType.WhereSingle);
var value = expContext.Result.GetString(); var value = expContext.Result.GetString();
var pars = expContext.Parameters; var pars = expContext.Parameters;
base.Check(value, pars, "(( @Id0 = [Id] ) OR ( @MethodConst1='' OR @MethodConst1 IS NULL ))", new List<SugarParameter>() { base.Check(value, pars, "(( :Id0 = \"ID\" ) OR ( :MethodConst1='' OR :MethodConst1 IS NULL ))", new List<SugarParameter>() {
new SugarParameter("@MethodConst1",1), new SugarParameter(":MethodConst1",1),
new SugarParameter("@Id0",2) new SugarParameter(":Id0",2)
}, "StringIsNullOrEmpty3 error"); }, "StringIsNullOrEmpty3 error");
} }
private void StringIsNullOrEmpty4() private void StringIsNullOrEmpty4()
{ {
WhereConst.name = "xx"; WhereConst.name = "xx";
Expression<Func<Student, bool>> exp = it => 2 == it.Id || SqlFunc.IsNullOrEmpty(WhereConst.name); ; Expression<Func<Student, bool>> exp = it => 2 == it.Id || SqlFunc.IsNullOrEmpty(WhereConst.name); ;
SqlServerExpressionContext expContext = new SqlServerExpressionContext(); OracleExpressionContext expContext = new OracleExpressionContext();
expContext.Resolve(exp, ResolveExpressType.WhereSingle); expContext.Resolve(exp, ResolveExpressType.WhereSingle);
var value = expContext.Result.GetString(); var value = expContext.Result.GetString();
var pars = expContext.Parameters; var pars = expContext.Parameters;
base.Check(value, pars, "(( @Id0 = [Id] ) OR ( @MethodConst1='' OR @MethodConst1 IS NULL ))", new List<SugarParameter>() { base.Check(value, pars, "(( :Id0 = \"ID\" ) OR ( :MethodConst1='' OR :MethodConst1 IS NULL ))", new List<SugarParameter>() {
new SugarParameter("@MethodConst1","xx"), new SugarParameter(":MethodConst1","xx"),
new SugarParameter("@Id0",2) new SugarParameter(":Id0",2)
}, "StringIsNullOrEmpty4 error"); }, "StringIsNullOrEmpty4 error");
} }
private void StringIsNullOrEmpty5() private void StringIsNullOrEmpty5()
{ {
WhereConst.name = "xx"; WhereConst.name = "xx";
Expression<Func<Student, bool>> exp = it => !SqlFunc.IsNullOrEmpty(WhereConst.name); ; Expression<Func<Student, bool>> exp = it => !SqlFunc.IsNullOrEmpty(WhereConst.name); ;
SqlServerExpressionContext expContext = new SqlServerExpressionContext(); OracleExpressionContext expContext = new OracleExpressionContext();
expContext.Resolve(exp, ResolveExpressType.WhereSingle); expContext.Resolve(exp, ResolveExpressType.WhereSingle);
var value = expContext.Result.GetString(); var value = expContext.Result.GetString();
var pars = expContext.Parameters; var pars = expContext.Parameters;
base.Check(value, pars, "NOT( @MethodConst0='' OR @MethodConst0 IS NULL )", new List<SugarParameter>() { base.Check(value, pars, "NOT( :MethodConst0='' OR :MethodConst0 IS NULL )", new List<SugarParameter>() {
new SugarParameter("@MethodConst0","xx") new SugarParameter(":MethodConst0","xx")
}, "StringIsNullOrEmpty5 error"); }, "StringIsNullOrEmpty5 error");
} }
#endregion #endregion
@ -639,11 +639,11 @@ namespace OrmTest.UnitTest
private void HasValue() private void HasValue()
{ {
Expression<Func<Student, bool>> exp = it => SqlFunc.HasValue(it.Name); Expression<Func<Student, bool>> exp = it => SqlFunc.HasValue(it.Name);
SqlServerExpressionContext expContext = new SqlServerExpressionContext(); OracleExpressionContext expContext = new OracleExpressionContext();
expContext.Resolve(exp, ResolveExpressType.WhereSingle); expContext.Resolve(exp, ResolveExpressType.WhereSingle);
var value = expContext.Result.GetString(); var value = expContext.Result.GetString();
var pars = expContext.Parameters; var pars = expContext.Parameters;
base.Check(value, pars, "( [Name]<>'' AND [Name] IS NOT NULL )", new List<SugarParameter>() base.Check(value, pars, "( \"NAME\"<>'' AND \"NAME\" IS NOT NULL )", new List<SugarParameter>()
{ {
}, "HasValue error"); }, "HasValue error");
@ -652,11 +652,11 @@ namespace OrmTest.UnitTest
private void HasNumber() private void HasNumber()
{ {
Expression<Func<Student, bool>> exp = it => SqlFunc.HasNumber(it.Id); Expression<Func<Student, bool>> exp = it => SqlFunc.HasNumber(it.Id);
SqlServerExpressionContext expContext = new SqlServerExpressionContext(); OracleExpressionContext expContext = new OracleExpressionContext();
expContext.Resolve(exp, ResolveExpressType.WhereSingle); expContext.Resolve(exp, ResolveExpressType.WhereSingle);
var value = expContext.Result.GetString(); var value = expContext.Result.GetString();
var pars = expContext.Parameters; var pars = expContext.Parameters;
base.Check(value, pars, "( [Id]>0 AND [Id] IS NOT NULL )", new List<SugarParameter>() base.Check(value, pars, "( \"ID\">0 AND \"ID\" IS NOT NULL )", new List<SugarParameter>()
{ {
@ -664,44 +664,44 @@ namespace OrmTest.UnitTest
} }
private void MappingColumn() { private void MappingColumn() {
Expression<Func<Student, bool>> exp = it => SqlFunc.MappingColumn(it.Id,"Name") == 1; Expression<Func<Student, bool>> exp = it => SqlFunc.MappingColumn(it.Id,"Name") == 1;
SqlServerExpressionContext expContext = new SqlServerExpressionContext(); OracleExpressionContext expContext = new OracleExpressionContext();
expContext.Resolve(exp, ResolveExpressType.WhereSingle); expContext.Resolve(exp, ResolveExpressType.WhereSingle);
var value = expContext.Result.GetString(); var value = expContext.Result.GetString();
var pars = expContext.Parameters; var pars = expContext.Parameters;
base.Check(value, pars, "(Name = @Const1 )", new List<SugarParameter>() base.Check(value, pars, "(Name = :Const1 )", new List<SugarParameter>()
{ {
new SugarParameter("@Const1",1) new SugarParameter(":Const1",1)
}, "MappingColumn error"); }, "MappingColumn error");
} }
private void IIF() private void IIF()
{ {
Expression<Func<Student, bool>> exp = it => SqlFunc.IIF(it.Id == 1, 1, 2)==1; Expression<Func<Student, bool>> exp = it => SqlFunc.IIF(it.Id == 1, 1, 2)==1;
SqlServerExpressionContext expContext = new SqlServerExpressionContext(); OracleExpressionContext expContext = new OracleExpressionContext();
expContext.Resolve(exp, ResolveExpressType.WhereSingle); expContext.Resolve(exp, ResolveExpressType.WhereSingle);
var value = expContext.Result.GetString(); var value = expContext.Result.GetString();
var pars = expContext.Parameters; var pars = expContext.Parameters;
base.Check(value, pars, "(( CASE WHEN ( [Id] = @Id0 ) THEN @MethodConst1 ELSE @MethodConst2 END ) = @Const3 )", new List<SugarParameter>() base.Check(value, pars, "(( CASE WHEN ( \"ID\" = :Id0 ) THEN :MethodConst1 ELSE :MethodConst2 END ) = :Const3 )", new List<SugarParameter>()
{ {
new SugarParameter("@Id0",1), new SugarParameter(":Id0",1),
new SugarParameter("@MethodConst1",1), new SugarParameter(":MethodConst1",1),
new SugarParameter("@MethodConst2",2), new SugarParameter(":MethodConst2",2),
new SugarParameter("@Const3",1) new SugarParameter(":Const3",1)
}, "IIF error"); }, "IIF error");
} }
private void IIF2() private void IIF2()
{ {
Expression<Func<Student, bool>> exp = it => SqlFunc.IIF(SqlFunc.Contains(it.Name,"a"), 1, 2)==1; Expression<Func<Student, bool>> 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); expContext.Resolve(exp, ResolveExpressType.WhereSingle);
var value = expContext.Result.GetString(); var value = expContext.Result.GetString();
var pars = expContext.Parameters; var pars = expContext.Parameters;
base.Check(value, pars, "(( CASE WHEN ([Name] like '%'+@MethodConst0+'%') THEN @MethodConst1 ELSE @MethodConst2 END ) = @Const3 )", new List<SugarParameter>() base.Check(value, pars, "(( CASE WHEN (\"NAME\" like '%'||:MethodConst0||'%') THEN :MethodConst1 ELSE :MethodConst2 END ) = :Const3 )", new List<SugarParameter>()
{ {
new SugarParameter("@MethodConst0","a"), new SugarParameter(":MethodConst0","a"),
new SugarParameter("@MethodConst1",1), new SugarParameter(":MethodConst1",1),
new SugarParameter("@MethodConst2",2), new SugarParameter(":MethodConst2",2),
new SugarParameter("@Const3",1) new SugarParameter(":Const3",1)
}, "IIF2 error"); }, "IIF2 error");
} }
} }

View File

@ -14,7 +14,7 @@ namespace SqlSugar
public SqlSugarClient Context { get; set; } public SqlSugarClient Context { get; set; }
public OracleExpressionContext() public OracleExpressionContext()
{ {
base.DbMehtods = new MySqlMethod(); base.DbMehtods = new OracleMethod();
} }
public override string SqlParameterKeyWord public override string SqlParameterKeyWord
{ {
@ -40,6 +40,39 @@ namespace SqlSugar
} }
public partial class OracleMethod : DefaultDbMethod, IDbMethods 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);
}
} }
} }