SqlSugar/Src/Asp.Net/SqlServerTest/_OldTest/UnitTest/ExpressionTest/Select.cs

243 lines
10 KiB
C#
Raw Normal View History

2017-01-14 15:16:20 +08:00
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;
2017-03-04 15:07:58 +08:00
namespace OrmTest.UnitTest
2017-01-14 15:16:20 +08:00
{
2017-05-16 13:55:57 +08:00
public class Select : UnitTestBase
2017-01-14 15:16:20 +08:00
{
2017-01-27 18:35:48 +08:00
private Select() { }
public Select(int eachCount)
2017-01-14 20:12:39 +08:00
{
2017-01-27 18:35:48 +08:00
this.Count = eachCount;
}
internal void Init()
{
base.Begin();
for (int i = 0; i < base.Count; i++)
2017-01-14 20:12:39 +08:00
{
single();
2017-07-07 23:23:56 +08:00
single2();
2017-07-11 01:22:38 +08:00
single3();
2017-07-11 02:33:52 +08:00
single4();
single5();
2017-09-15 19:12:35 +08:00
single6();
2017-10-25 14:28:54 +08:00
single7();
single8();
2017-01-14 20:12:39 +08:00
Multiple();
2017-07-17 12:56:21 +08:00
Multiple2();
2017-01-14 20:12:39 +08:00
singleDynamic();
2017-01-27 17:18:30 +08:00
MultipleDynamic();
2017-01-14 20:12:39 +08:00
}
2017-01-27 18:35:48 +08:00
base.End("Select Test");
2017-01-14 20:12:39 +08:00
}
2017-10-25 14:28:54 +08:00
private void single7()
{
Expression<Func<DataTestInfo2, DataTestInfo2>> 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<SugarParameter>()
{
},
"Select.single7 Error");
}
private void single8()
{
Expression<Func<DataTestInfo2, object>> 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<SugarParameter>()
{
},
"Select.single8 Error");
}
2017-01-27 18:35:48 +08:00
private void Multiple()
2017-01-14 15:16:20 +08:00
{
2017-01-27 18:35:48 +08:00
Expression<Func<Student, School, object>> exp = (it, school) => new Student() { Name = "a", Id = it.Id, SchoolId = school.Id, TestId = it.Id + 1 };
2017-02-26 23:56:28 +08:00
ExpressionContext expContext = new ExpressionContext();
2017-07-07 23:18:25 +08:00
expContext.IsSingle = false;
2017-02-26 23:56:28 +08:00
expContext.Resolve(exp, ResolveExpressType.SelectMultiple);
2017-01-14 20:44:17 +08:00
var selectorValue = expContext.Result.GetString();
var pars = expContext.Parameters;
2017-01-27 18:39:13 +08:00
base.Check(
2017-01-27 18:35:48 +08:00
selectorValue,
pars,
2017-07-07 23:18:25 +08:00
@" @constant0 AS [Name] , [it].[Id] AS [Id] , [school].[Id] AS [SchoolId] , ( [it].[Id] + @Id1 ) AS [TestId] ",
2017-01-27 18:35:48 +08:00
new List<SugarParameter>(){
2017-07-07 23:18:25 +08:00
new SugarParameter("@constant0","a"),
new SugarParameter("@Id1",1)
},
2017-01-27 18:35:48 +08:00
"Select.Multiple Error");
2017-01-14 19:35:22 +08:00
}
2017-07-17 12:56:21 +08:00
private void Multiple2()
{
Expression<Func<Student, School, object>> 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<SugarParameter>(){
},
"Select.Multiple Error");
}
2017-01-27 18:35:48 +08:00
2017-07-17 12:56:21 +08:00
private void MultipleDynamic()
2017-01-14 20:12:39 +08:00
{
2017-01-27 17:18:30 +08:00
Expression<Func<Student, School, object>> exp = (it, school) => new { Name = "a", Id = it.Id / 2, SchoolId = school.Id };
2017-02-26 23:56:28 +08:00
ExpressionContext expContext = new ExpressionContext();
2017-07-07 23:18:25 +08:00
expContext.IsSingle = false;
2017-02-26 23:56:28 +08:00
expContext.Resolve(exp, ResolveExpressType.SelectMultiple);
2017-01-14 20:44:17 +08:00
var selectorValue = expContext.Result.GetString();
var pars = expContext.Parameters;
2017-01-27 18:39:13 +08:00
base.Check(
2017-01-27 18:35:48 +08:00
selectorValue,
pars,
2017-07-07 23:18:25 +08:00
@" @constant0 AS [Name] , ( [it].[Id] / @Id1 ) AS [Id] , [school].[Id] AS [SchoolId] ",
2017-01-27 18:35:48 +08:00
new List<SugarParameter>(){
2017-07-07 23:18:25 +08:00
new SugarParameter("@constant0","a"),
new SugarParameter("@Id1", 2)},
2017-01-27 18:35:48 +08:00
"Select.MultipleDynamic Error");
2017-01-14 20:12:39 +08:00
}
2017-01-27 18:35:48 +08:00
private void single()
2017-01-14 19:35:22 +08:00
{
2017-01-14 20:04:23 +08:00
int p = 1;
2017-07-07 23:18:25 +08:00
Expression<Func<Student, object>> exp = it => new Student() { Name = "a", Id = it.Id, SchoolId = p,TestId=it.Id+11 };
2017-02-26 23:56:28 +08:00
ExpressionContext expContext = new ExpressionContext();
expContext.Resolve(exp, ResolveExpressType.SelectSingle);
2017-01-14 20:04:23 +08:00
var selectorValue = expContext.Result.GetString();
2017-01-14 19:35:22 +08:00
var pars = expContext.Parameters;
2017-01-27 18:39:13 +08:00
base.Check(
2017-01-27 18:35:48 +08:00
selectorValue,
pars,
2017-07-07 23:18:25 +08:00
@" @constant0 AS [Name] , [Id] AS [Id] , @constant1 AS [SchoolId] , ( [Id] + @Id2 ) AS [TestId] ",
2017-01-27 18:35:48 +08:00
new List<SugarParameter>(){
2017-07-07 23:18:25 +08:00
new SugarParameter("@constant0","a"),
new SugarParameter("@constant1",1),
new SugarParameter("@Id2",11 ) },
2017-07-07 23:23:56 +08:00
"Select.single Error");
}
private void single2(int p=1)
{
Expression<Func<Student, object>> 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<SugarParameter>(){
new SugarParameter("@constant0","a"),
new SugarParameter("@constant1",1),
new SugarParameter("@Id2",11 ) },
2017-01-27 18:35:48 +08:00
"Select.single Error");
2017-01-14 19:35:22 +08:00
}
2017-07-11 01:22:38 +08:00
private void single3(int p = 1)
{
Expression<Func<Student, object>> 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");
}
2017-01-14 19:35:22 +08:00
2017-07-11 02:33:52 +08:00
private void single4(int p = 1)
{
Expression<Func<Student, object>> 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");
}
2017-07-11 13:18:24 +08:00
private void single5()
2017-07-11 02:33:52 +08:00
{
2017-07-11 13:18:24 +08:00
var p =(DateTime?) DateTime.Now;
2017-07-11 09:21:57 +08:00
Expression<Func<Student, object>> exp = it => p.HasValue;
2017-07-11 02:33:52 +08:00
SqlServerExpressionContext expContext = new SqlServerExpressionContext();
expContext.IsSingle = false;
expContext.Resolve(exp, ResolveExpressType.WhereMultiple);
var selectorValue = expContext.Result.GetString();
var pars = expContext.Parameters;
base.Check(
2017-07-11 13:18:24 +08:00
@"( @constant0<>'' AND @constant0 IS NOT NULL )", new List<SugarParameter>() {
new SugarParameter("@constant0",p)
}, selectorValue, pars,
2017-09-15 19:12:35 +08:00
"Select.single5 Error");
}
private void single6()
{
var p = (DateTime?)DateTime.Now;
Expression<Func<Student, object>> 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<SugarParameter>() {
new SugarParameter("@Const0",p)
}, selectorValue, pars,
"Select.single6 Error");
2017-07-11 02:33:52 +08:00
}
2017-01-27 18:35:48 +08:00
private void singleDynamic()
2017-01-14 19:35:22 +08:00
{
2017-01-14 20:04:23 +08:00
string a = "a";
2017-07-07 23:18:25 +08:00
Expression<Func<Student, object>> exp = it => new { x = it.Id, shoolid = 1, name = a,p=it.Id*2 };
2017-02-26 23:56:28 +08:00
ExpressionContext expContext = new ExpressionContext();
expContext.Resolve(exp, ResolveExpressType.SelectSingle);
2017-01-14 20:04:23 +08:00
var selectorValue = expContext.Result.GetString();
2017-01-14 19:35:22 +08:00
var pars = expContext.Parameters;
2017-01-27 18:39:13 +08:00
base.Check(
2017-01-27 18:35:48 +08:00
selectorValue,
pars,
2017-07-07 23:18:25 +08:00
@" [Id] AS [x] , @constant0 AS [shoolid] , @constant1 AS [name] , ( [Id] * @Id2 ) AS [p] ",
2017-01-27 18:35:48 +08:00
new List<SugarParameter>(){
2017-07-07 23:18:25 +08:00
new SugarParameter("@constant0",1),
new SugarParameter("@constant1","a"),
new SugarParameter("@Id2",2)},
"Select.singleDynamic Error");
2017-01-14 15:16:20 +08:00
}
}
}