using OrmTest.Models; using SqlSugar; using System; using System.Collections.Generic; using System.Linq; using System.Linq.Expressions; using System.Text; using System.Threading.Tasks; namespace OrmTest.UnitTest { public class Select : UnitTestBase { private Select() { } public Select(int eachCount) { this.Count = eachCount; } internal void Init() { base.Begin(); for (int i = 0; i < base.Count; i++) { single(); single2(); single3(); single4(); single5(); single6(); single7(); single8(); Multiple(); Multiple2(); singleDynamic(); MultipleDynamic(); } base.End("Select Test"); } private void single7() { Expression> exp =it => new DataTestInfo2() { Bool1=it.Bool1 , Bool2=it.Bool2 }; ExpressionContext expContext = new ExpressionContext(); expContext.IsSingle = false; expContext.Resolve(exp, ResolveExpressType.SelectSingle); var selectorValue = expContext.Result.GetString(); var pars = expContext.Parameters; base.Check( selectorValue, pars, @"[Bool1] AS [Bool1] , [Bool2] AS [Bool2] ", new List() { }, "Select.single7 Error"); } private void single8() { Expression> exp = it => new { Bool1 = it.Bool1, Bool2 = it.Bool2 }; ExpressionContext expContext = new ExpressionContext(); expContext.IsSingle = false; expContext.Resolve(exp, ResolveExpressType.SelectSingle); var selectorValue = expContext.Result.GetString(); var pars = expContext.Parameters; base.Check( selectorValue, pars, @"[Bool1] AS [Bool1] , [Bool2] AS [Bool2] ", new List() { }, "Select.single8 Error"); } private void Multiple() { Expression> exp = (it, school) => new Student() { Name = "a", Id = it.Id, SchoolId = school.Id, TestId = it.Id + 1 }; ExpressionContext expContext = new ExpressionContext(); expContext.IsSingle = false; expContext.Resolve(exp, ResolveExpressType.SelectMultiple); var selectorValue = expContext.Result.GetString(); var pars = expContext.Parameters; base.Check( selectorValue, pars, @" @constant0 AS [Name] , [it].[Id] AS [Id] , [school].[Id] AS [SchoolId] , ( [it].[Id] + @Id1 ) AS [TestId] ", new List(){ new SugarParameter("@constant0","a"), new SugarParameter("@Id1",1) }, "Select.Multiple Error"); } private void Multiple2() { Expression> exp = (it, school) => new ViewModelStudent3() { SchoolName=school.Name,Id=SqlFunc.GetSelfAndAutoFill(it.Id) }; ExpressionContext expContext = new ExpressionContext(); expContext.IsSingle = false; expContext.Resolve(exp, ResolveExpressType.SelectMultiple); var selectorValue = expContext.Result.GetString(); var pars = expContext.Parameters; base.Check( selectorValue, pars, @" [school].[Name] AS [SchoolName] ,it.*", new List(){ }, "Select.Multiple Error"); } private void MultipleDynamic() { Expression> exp = (it, school) => new { Name = "a", Id = it.Id / 2, SchoolId = school.Id }; ExpressionContext expContext = new ExpressionContext(); expContext.IsSingle = false; expContext.Resolve(exp, ResolveExpressType.SelectMultiple); var selectorValue = expContext.Result.GetString(); var pars = expContext.Parameters; base.Check( selectorValue, pars, @" @constant0 AS [Name] , ( [it].[Id] / @Id1 ) AS [Id] , [school].[Id] AS [SchoolId] ", new List(){ new SugarParameter("@constant0","a"), new SugarParameter("@Id1", 2)}, "Select.MultipleDynamic Error"); } private void single() { int p = 1; Expression> exp = it => new Student() { Name = "a", Id = it.Id, SchoolId = p,TestId=it.Id+11 }; ExpressionContext expContext = new ExpressionContext(); expContext.Resolve(exp, ResolveExpressType.SelectSingle); var selectorValue = expContext.Result.GetString(); var pars = expContext.Parameters; base.Check( selectorValue, pars, @" @constant0 AS [Name] , [Id] AS [Id] , @constant1 AS [SchoolId] , ( [Id] + @Id2 ) AS [TestId] ", new List(){ new SugarParameter("@constant0","a"), new SugarParameter("@constant1",1), new SugarParameter("@Id2",11 ) }, "Select.single Error"); } private void single2(int p=1) { Expression> exp = it => new Student() { Name = "a", Id = it.Id, SchoolId = p, TestId = it.Id + 11 }; ExpressionContext expContext = new ExpressionContext(); expContext.Resolve(exp, ResolveExpressType.SelectSingle); var selectorValue = expContext.Result.GetString(); var pars = expContext.Parameters; base.Check( selectorValue, pars, @" @constant0 AS [Name] , [Id] AS [Id] , @constant1 AS [SchoolId] , ( [Id] + @Id2 ) AS [TestId] ", new List(){ new SugarParameter("@constant0","a"), new SugarParameter("@constant1",1), new SugarParameter("@Id2",11 ) }, "Select.single Error"); } private void single3(int p = 1) { Expression> exp = it => new DataTestInfo() { Datetime1=DateTime.Now, String=it.Name}; ExpressionContext expContext = new ExpressionContext(); expContext.Resolve(exp, ResolveExpressType.SelectSingle); var selectorValue = expContext.Result.GetString(); var pars = expContext.Parameters; base.Check( @" @constant0 AS [Datetime1] , [Name] AS [String] ", null,selectorValue,null, "Select.single3 Error"); } private void single4(int p = 1) { Expression> exp = it => it.CreateTime.HasValue; SqlServerExpressionContext expContext = new SqlServerExpressionContext(); expContext.IsSingle = false; expContext.Resolve(exp, ResolveExpressType.WhereMultiple); var selectorValue = expContext.Result.GetString(); var pars = expContext.Parameters; base.Check( @"( [it].[CreateTime]<>'' AND [it].[CreateTime] IS NOT NULL )", null, selectorValue, null, "Select.single4 Error"); } private void single5() { var p =(DateTime?) DateTime.Now; Expression> exp = it => p.HasValue; SqlServerExpressionContext expContext = new SqlServerExpressionContext(); expContext.IsSingle = false; expContext.Resolve(exp, ResolveExpressType.WhereMultiple); var selectorValue = expContext.Result.GetString(); var pars = expContext.Parameters; base.Check( @"( @constant0<>'' AND @constant0 IS NOT NULL )", new List() { new SugarParameter("@constant0",p) }, selectorValue, pars, "Select.single5 Error"); } private void single6() { var p = (DateTime?)DateTime.Now; Expression> exp = it => p.Value; SqlServerExpressionContext expContext = new SqlServerExpressionContext(); expContext.IsSingle = false; expContext.Resolve(exp, ResolveExpressType.FieldSingle); var selectorValue = expContext.Result.GetString(); var pars = expContext.Parameters; base.Check( @" @Const0 ", new List() { new SugarParameter("@Const0",p) }, selectorValue, pars, "Select.single6 Error"); } private void singleDynamic() { string a = "a"; Expression> exp = it => new { x = it.Id, shoolid = 1, name = a,p=it.Id*2 }; ExpressionContext expContext = new ExpressionContext(); expContext.Resolve(exp, ResolveExpressType.SelectSingle); var selectorValue = expContext.Result.GetString(); var pars = expContext.Parameters; base.Check( selectorValue, pars, @" [Id] AS [x] , @constant0 AS [shoolid] , @constant1 AS [name] , ( [Id] * @Id2 ) AS [p] ", new List(){ new SugarParameter("@constant0",1), new SugarParameter("@constant1","a"), new SugarParameter("@Id2",2)}, "Select.singleDynamic Error"); } } }