SqlSugar/Src/Asp.Net/SqlServerTest/UnitTest/ExpressionTest/Where.cs

304 lines
13 KiB
C#
Raw Normal View History

2017-01-28 14:32:06 +08:00
using OrmTest.Models;
using SqlSugar;
using System;
2017-01-14 20:53:04 +08:00
using System.Collections.Generic;
using System.Linq;
2017-01-28 14:32:06 +08:00
using System.Linq.Expressions;
2017-01-14 20:53:04 +08:00
using System.Text;
using System.Threading.Tasks;
2017-03-04 15:07:58 +08:00
namespace OrmTest.UnitTest
2017-01-14 20:53:04 +08:00
{
2017-05-16 13:55:57 +08:00
public class Where : UnitTestBase
2017-01-14 20:53:04 +08:00
{
2017-01-28 14:32:06 +08:00
private Where() { }
public Where(int eachCount)
{
this.Count = eachCount;
}
internal void Init()
{
base.Begin();
for (int i = 0; i < base.Count; i++)
{
2017-06-28 12:13:32 +08:00
whereSingle17();
2017-06-27 16:25:36 +08:00
whereSingle16();
2017-06-26 23:02:09 +08:00
whereSingle15();
2017-01-28 14:32:06 +08:00
whereSingle1();
whereSingle2();
whereSingle3();
whereSingle4();
2017-01-28 20:43:34 +08:00
whereSingle5();
2017-01-28 20:58:16 +08:00
whereSingle6();
2017-05-23 18:48:42 +08:00
whereSingle7(new Student() { Id = 1 });
2017-05-25 02:28:47 +08:00
whereSingle8(new Student() { Id = 1 });
2017-05-25 02:46:00 +08:00
whereSingle9(new Student() { Id = 1 });
2017-06-04 00:37:30 +08:00
whereSingle10();
whereSingle11();
2017-06-04 08:47:53 +08:00
whereSingle12();
2017-06-05 13:10:37 +08:00
whereSingle13();
2017-06-13 16:23:08 +08:00
whereSingle14();
2017-06-26 23:02:09 +08:00
whereSingle15();
2017-01-28 21:19:48 +08:00
WhereMultiple1();
2017-01-28 21:52:05 +08:00
WhereMultiple2();
2017-05-23 18:48:42 +08:00
2017-01-28 14:32:06 +08:00
}
base.End("Where Test");
}
2017-01-28 21:19:48 +08:00
private void WhereMultiple1()
{
Expression<Func<Student, bool>> exp = it => it.Id > 1;
2017-02-26 23:56:28 +08:00
ExpressionContext expContext = new ExpressionContext();
expContext.Resolve(exp, ResolveExpressType.WhereMultiple);
2017-01-28 21:19:48 +08:00
var value = expContext.Result.GetString();
var pars = expContext.Parameters;
2017-04-29 21:17:57 +08:00
base.Check(value, pars, "( [it].[Id] > @Id0 )", new List<SugarParameter>() {
2017-01-28 21:19:48 +08:00
new SugarParameter("@Id0",1)
}, "WhereMultiple1");
}
2017-01-28 21:52:05 +08:00
private void WhereMultiple2()
{
string name = "a";
WhereConst.name = "a1";
Expression<Func<Student, bool>> exp = it => (it.Id > 1 && it.Name != name || it.Id == 1) || it.Name == WhereConst.name;
2017-02-26 23:56:28 +08:00
ExpressionContext expContext = new ExpressionContext();
expContext.Resolve(exp, ResolveExpressType.WhereMultiple);
2017-01-28 21:52:05 +08:00
var value = expContext.Result.GetString();
var pars = expContext.Parameters;
2017-04-29 21:17:57 +08:00
base.Check(value, pars, " (((( [it].[Id] > @Id0 ) AND ( [it].[Name] <> @Name1 )) OR ( [it].[Id] = @Id2 )) OR ( [it].[Name] = @Name3 ))", new List<SugarParameter>() {
2017-01-28 21:52:05 +08:00
new SugarParameter("@Id0",1),
new SugarParameter("@Name1","a"),
new SugarParameter("@Id2",1),
new SugarParameter("@Name3","a1")
}, "WhereMultiple2");
}
2017-01-28 14:32:06 +08:00
private void whereSingle1()
{
Expression<Func<Student, bool>> exp = it => it.Id > 1;
2017-02-26 23:56:28 +08:00
ExpressionContext expContext = new ExpressionContext();
expContext.Resolve(exp, ResolveExpressType.WhereSingle);
2017-01-28 14:32:06 +08:00
var value = expContext.Result.GetString();
var pars = expContext.Parameters;
2017-04-29 21:17:57 +08:00
base.Check(value, pars, "( [Id] > @Id0 )", new List<SugarParameter>() {
2017-01-28 20:13:29 +08:00
new SugarParameter("@Id0",1)
2017-01-28 14:32:06 +08:00
}, "whereSingle1");
}
private void whereSingle2()
{
2017-01-28 20:13:29 +08:00
Expression<Func<Student, bool>> exp = it => 1 > it.Id;
2017-02-26 23:56:28 +08:00
ExpressionContext expContext = new ExpressionContext();
expContext.Resolve(exp, ResolveExpressType.WhereSingle);
2017-01-28 14:32:06 +08:00
var value = expContext.Result.GetString();
var pars = expContext.Parameters;
2017-04-29 21:17:57 +08:00
base.Check(value, pars, "( @Id0 > [Id] )", new List<SugarParameter>() {
2017-01-28 20:13:29 +08:00
new SugarParameter("@Id0",1)
2017-01-28 14:32:06 +08:00
}, "whereSingle2");
}
private void whereSingle3()
{
Expression<Func<Student, bool>> exp = it => it.Id > 1 || it.Name == "a";
2017-02-26 23:56:28 +08:00
ExpressionContext expContext = new ExpressionContext();
expContext.Resolve(exp, ResolveExpressType.WhereSingle);
2017-01-28 14:32:06 +08:00
var value = expContext.Result.GetString();
var pars = expContext.Parameters;
2017-04-29 21:17:57 +08:00
base.Check(value, pars, " (( [Id] > @Id0 ) OR ( [Name] = @Name1 ))", new List<SugarParameter>() {
2017-01-28 20:13:29 +08:00
new SugarParameter("@Id0",1),
new SugarParameter("@Name1","a")
}, "whereSingle3");
2017-01-28 14:32:06 +08:00
}
private void whereSingle4()
{
2017-01-28 20:13:29 +08:00
Expression<Func<Student, bool>> exp = it => (it.Id > 1 && it.Name != "a") || it.Name == "a1";
2017-02-26 23:56:28 +08:00
ExpressionContext expContext = new ExpressionContext();
expContext.Resolve(exp, ResolveExpressType.WhereSingle);
2017-01-28 14:32:06 +08:00
var value = expContext.Result.GetString();
var pars = expContext.Parameters;
2017-04-29 21:17:57 +08:00
base.Check(value, pars, " ((( [Id] > @Id0 ) AND ( [Name] <> @Name1 )) OR ( [Name] = @Name2 )) ", new List<SugarParameter>() {
2017-01-28 20:13:29 +08:00
new SugarParameter("@Id0",1),
new SugarParameter("@Name1","a"),
new SugarParameter("@Name2","a1")
2017-01-28 14:32:06 +08:00
}, "whereSingle4");
}
2017-01-28 20:43:34 +08:00
private void whereSingle5()
{
string name = "a";
WhereConst.name = "a1";
Expression<Func<Student, bool>> exp = it => (it.Id > 1 && it.Name != name) || it.Name == WhereConst.name;
2017-02-26 23:56:28 +08:00
ExpressionContext expContext = new ExpressionContext();
expContext.Resolve(exp, ResolveExpressType.WhereSingle);
2017-01-28 20:43:34 +08:00
var value = expContext.Result.GetString();
var pars = expContext.Parameters;
2017-04-29 21:17:57 +08:00
base.Check(value, pars, " ((( [Id] > @Id0 ) AND ( [Name] <> @Name1 )) OR ( [Name] = @Name2 )) ", new List<SugarParameter>() {
2017-01-28 20:43:34 +08:00
new SugarParameter("@Id0",1),
new SugarParameter("@Name1","a"),
new SugarParameter("@Name2","a1")
2017-01-28 20:58:16 +08:00
}, "whereSingle5");
}
private void whereSingle6()
{
string name = "a";
WhereConst.name = "a1";
Expression<Func<Student, bool>> exp = it => (it.Id > 1 && it.Name != name||it.Id==1) || it.Name == WhereConst.name;
2017-02-26 23:56:28 +08:00
ExpressionContext expContext = new ExpressionContext();
expContext.Resolve(exp, ResolveExpressType.WhereSingle);
2017-01-28 20:58:16 +08:00
var value = expContext.Result.GetString();
var pars = expContext.Parameters;
2017-04-29 21:17:57 +08:00
base.Check(value, pars, " (((( [Id] > @Id0 ) AND ( [Name] <> @Name1 )) OR ( [Id] = @Id2 )) OR ( [Name] = @Name3 ))", new List<SugarParameter>() {
2017-01-28 20:58:16 +08:00
new SugarParameter("@Id0",1),
new SugarParameter("@Name1","a"),
new SugarParameter("@Id2",1),
new SugarParameter("@Name3","a1")
}, "whereSingle6");
2017-01-28 20:43:34 +08:00
}
2017-05-23 18:48:42 +08:00
private void whereSingle7(Student st)
{
Expression<Func<Student, bool>> exp = it => it.Id > st.Id;
ExpressionContext expContext = new ExpressionContext();
expContext.Resolve(exp, ResolveExpressType.WhereSingle);
var value = expContext.Result.GetString();
var pars = expContext.Parameters;
base.Check(value, pars, "( [Id] > @Id0 )", new List<SugarParameter>() {
new SugarParameter("@Id0",1)
}, "whereSingle7");
}
2017-05-25 02:07:49 +08:00
private void whereSingle8(Student st)
{
Expression<Func<Student, bool>> exp = it => it.Name == null;
ExpressionContext expContext = new ExpressionContext();
expContext.Resolve(exp, ResolveExpressType.WhereSingle);
var value = expContext.Result.GetString();
var pars = expContext.Parameters;
2017-05-25 02:46:00 +08:00
base.Check(value, pars, "( [Name] IS NULL )", new List<SugarParameter>() {
2017-05-25 02:07:49 +08:00
}, "whereSingle8");
}
2017-05-25 02:46:00 +08:00
private void whereSingle9(Student st)
{
2017-06-04 00:22:16 +08:00
Expression<Func<Student, bool>> exp = it => it.Name == st.Name;
ExpressionContext expContext = new ExpressionContext();
expContext.Resolve(exp, ResolveExpressType.WhereSingle);
var value = expContext.Result.GetString();
var pars = expContext.Parameters;
base.Check(value, pars, "( [Name] = @Name0 )", new List<SugarParameter>()
{
new SugarParameter("@Name0",null)
}, "whereSingle9");
2017-05-25 02:46:00 +08:00
}
2017-06-04 00:37:30 +08:00
private void whereSingle10()
{
Expression<Func<Student, bool>> exp = it => true;
ExpressionContext expContext = new ExpressionContext();
expContext.Resolve(exp, ResolveExpressType.WhereSingle);
var value = expContext.Result.GetString();
var pars = expContext.Parameters;
base.Check(value, pars, "( 1 = 1 )", new List<SugarParameter>()
{
}, "whereSingle10");
}
private void whereSingle11()
{
Expression<Func<Student, bool>> exp = it => !true;
ExpressionContext expContext = new ExpressionContext();
expContext.Resolve(exp, ResolveExpressType.WhereSingle);
var value = expContext.Result.GetString();
var pars = expContext.Parameters;
base.Check(value, pars, "( 1 = 2 )", new List<SugarParameter>()
{
}, "whereSingle11");
}
2017-06-04 08:47:53 +08:00
private void whereSingle12()
{
Expression<Func<DataTestInfo2, bool>> exp = it => it.Bool1==true;
ExpressionContext expContext = new ExpressionContext();
expContext.Resolve(exp, ResolveExpressType.WhereSingle);
var value = expContext.Result.GetString();
var pars = expContext.Parameters;
base.Check(value, pars, "( [Bool1] = @Bool10 )", new List<SugarParameter>()
{
new SugarParameter("@Bool10",true)
}, "whereSingle12");
}
2017-06-05 13:10:37 +08:00
private void whereSingle13()
{
Expression<Func<Student, bool>> exp = it => it.Name!=null;
ExpressionContext expContext = new ExpressionContext();
expContext.Resolve(exp, ResolveExpressType.WhereSingle);
var value = expContext.Result.GetString();
var pars = expContext.Parameters;
base.Check(value, pars, "( [Name] IS NOT NULL )", new List<SugarParameter>()
{
}, "whereSingle13");
}
2017-06-13 16:23:08 +08:00
private void whereSingle14()
{
Expression<Func<Student, bool>> exp = it =>true&& it.Name != null;
ExpressionContext expContext = new ExpressionContext();
expContext.Resolve(exp, ResolveExpressType.WhereSingle);
var value = expContext.Result.GetString();
var pars = expContext.Parameters;
base.Check(value, pars, "(( 1 = 1 ) AND( [Name] IS NOT NULL ))", new List<SugarParameter>()
{
}, "whereSingle14");
}
2017-06-26 23:02:09 +08:00
private void whereSingle15()
{
Expression<Func<DataTestInfo, bool>> exp = it =>it.Money2 == 1;
ExpressionContext expContext = new ExpressionContext();
expContext.Resolve(exp, ResolveExpressType.WhereSingle);
var value = expContext.Result.GetString();
var pars = expContext.Parameters;
base.Check(value, pars, "( [Money2] = @Const0 )", new List<SugarParameter>()
{
new SugarParameter("@Const0",1)
}, "whereSingle15");
}
2017-06-27 16:25:36 +08:00
private void whereSingle16()
{
Dictionary<string, string> dic = new Dictionary<string, string>();
dic.Add("key", "x1");
Expression<Func<DataTestInfo, bool>> exp = it => it.String == dic["key"];
ExpressionContext expContext = new ExpressionContext();
expContext.Resolve(exp, ResolveExpressType.WhereSingle);
var value = expContext.Result.GetString();
var pars = expContext.Parameters;
base.Check(value, pars, "( [String] = @Const0 )", new List<SugarParameter>()
{
new SugarParameter("@Const0",dic["key"])
}, "whereSingle16");
}
2017-06-28 12:13:32 +08:00
private void whereSingle17()
{
Expression<Func<DataTestInfo, bool>> exp = it =>true&&it.String.Contains("a");
SqlServerExpressionContext expContext = new SqlServerExpressionContext();
expContext.Resolve(exp, ResolveExpressType.WhereSingle);
var value = expContext.Result.GetString();
var pars = expContext.Parameters;
base.Check(value, pars, "(( 1 = 1 ) AND ([String] like '%'+@MethodConst1+'%') )", new List<SugarParameter>()
{
new SugarParameter("@MethodConst1","a")
}, "whereSingle17");
}
2017-01-28 20:43:34 +08:00
}
public class WhereConst
{
public static string name { get; set; }
2017-01-14 20:53:04 +08:00
}
}