This commit is contained in:
sunkaixuan 2017-02-26 23:56:28 +08:00
parent ff827664f3
commit 1814eac56f
7 changed files with 58 additions and 45 deletions

View File

@ -29,16 +29,16 @@ namespace OrmTest.ExpressionTest
private void FieldSingle() private void FieldSingle()
{ {
Expression<Func<Student, object>> exp = it => it.Name; Expression<Func<Student, object>> exp = it => it.Name;
ExpressionContext expContext = new ExpressionContext(exp, ResolveExpressType.FieldSingle); ExpressionContext expContext = new ExpressionContext();
expContext.Resolve(); expContext.Resolve(exp, ResolveExpressType.FieldSingle);
var selectorValue = expContext.Result.GetString(); var selectorValue = expContext.Result.GetString();
Check(selectorValue, null, "Name", null, "FieldSingle"); Check(selectorValue, null, "Name", null, "FieldSingle");
} }
private void FieldMultiple() private void FieldMultiple()
{ {
Expression<Func<Student, object>> exp = it => it.Name; Expression<Func<Student, object>> exp = it => it.Name;
ExpressionContext expContext = new ExpressionContext(exp, ResolveExpressType.FieldMultiple); ExpressionContext expContext = new ExpressionContext();
expContext.Resolve(); expContext.Resolve(exp, ResolveExpressType.FieldMultiple);
var selectorValue = expContext.Result.GetString(); var selectorValue = expContext.Result.GetString();
Check(selectorValue, null, "it.Name", null, "FieldMultiple"); Check(selectorValue, null, "it.Name", null, "FieldMultiple");
} }

View File

@ -0,0 +1,12 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace OrmTest.ExpressionTest
{
public class Join
{
}
}

View File

@ -38,8 +38,8 @@ namespace OrmTest.ExpressionTest
private void Contains() private void Contains()
{ {
Expression<Func<Student, bool>> exp = it => NBORM.Contains(it.Name,"a"); Expression<Func<Student, bool>> exp = it => NBORM.Contains(it.Name,"a");
SqlServerExpressionContext expContext = new SqlServerExpressionContext(exp, ResolveExpressType.WhereSingle); SqlServerExpressionContext expContext = new SqlServerExpressionContext();
expContext.Resolve(); 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>() {
@ -50,8 +50,8 @@ namespace OrmTest.ExpressionTest
private void Trim() private void Trim()
{ {
Expression<Func<Student, bool>> exp = it =>NBORM.Trim(" a")==it.Name; Expression<Func<Student, bool>> exp = it =>NBORM.Trim(" a")==it.Name;
SqlServerExpressionContext expContext = new SqlServerExpressionContext(exp, ResolveExpressType.WhereSingle); SqlServerExpressionContext expContext = new SqlServerExpressionContext();
expContext.Resolve(); 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, "((rtrim(ltrim(@MethodConst0))) = Name )", new List<SugarParameter>() {
@ -62,8 +62,8 @@ namespace OrmTest.ExpressionTest
private void ToUpper() private void ToUpper()
{ {
Expression<Func<Student, bool>> exp = it =>"a"== NBORM.ToUpper(it.Id) ; Expression<Func<Student, bool>> exp = it =>"a"== NBORM.ToUpper(it.Id) ;
SqlServerExpressionContext expContext = new SqlServerExpressionContext(exp, ResolveExpressType.WhereSingle); SqlServerExpressionContext expContext = new SqlServerExpressionContext();
expContext.Resolve(); 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>() {
@ -73,8 +73,8 @@ namespace OrmTest.ExpressionTest
private void ToLower() private void ToLower()
{ {
Expression<Func<Student, bool>> exp = it => "a" == NBORM.ToLower(it.Id); Expression<Func<Student, bool>> exp = it => "a" == NBORM.ToLower(it.Id);
SqlServerExpressionContext expContext = new SqlServerExpressionContext(exp, ResolveExpressType.WhereSingle); SqlServerExpressionContext expContext = new SqlServerExpressionContext();
expContext.Resolve(); 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>() {
@ -86,8 +86,8 @@ namespace OrmTest.ExpressionTest
private void StringIsNullOrEmpty() private void StringIsNullOrEmpty()
{ {
Expression<Func<Student, bool>> exp = it => it.Id > 2 || NBORM.IsNullOrEmpty(it.Id); ; Expression<Func<Student, bool>> exp = it => it.Id > 2 || NBORM.IsNullOrEmpty(it.Id); ;
SqlServerExpressionContext expContext = new SqlServerExpressionContext(exp, ResolveExpressType.WhereSingle); SqlServerExpressionContext expContext = new SqlServerExpressionContext();
expContext.Resolve(); 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>() {
@ -97,8 +97,8 @@ namespace OrmTest.ExpressionTest
private void StringIsNullOrEmpty2() private void StringIsNullOrEmpty2()
{ {
Expression<Func<Student, bool>> exp = it => 2 == it.Id || NBORM.IsNullOrEmpty(true); ; Expression<Func<Student, bool>> exp = it => 2 == it.Id || NBORM.IsNullOrEmpty(true); ;
SqlServerExpressionContext expContext = new SqlServerExpressionContext(exp, ResolveExpressType.WhereSingle); SqlServerExpressionContext expContext = new SqlServerExpressionContext();
expContext.Resolve(); 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>() {
@ -110,8 +110,8 @@ namespace OrmTest.ExpressionTest
{ {
int a = 1; int a = 1;
Expression<Func<Student, bool>> exp = it => 2 == it.Id || NBORM.IsNullOrEmpty(a); ; Expression<Func<Student, bool>> exp = it => 2 == it.Id || NBORM.IsNullOrEmpty(a); ;
SqlServerExpressionContext expContext = new SqlServerExpressionContext(exp, ResolveExpressType.WhereSingle); SqlServerExpressionContext expContext = new SqlServerExpressionContext();
expContext.Resolve(); 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>() {
@ -123,8 +123,8 @@ namespace OrmTest.ExpressionTest
{ {
WhereConst.name = "xx"; WhereConst.name = "xx";
Expression<Func<Student, bool>> exp = it => 2 == it.Id || NBORM.IsNullOrEmpty(WhereConst.name); ; Expression<Func<Student, bool>> exp = it => 2 == it.Id || NBORM.IsNullOrEmpty(WhereConst.name); ;
SqlServerExpressionContext expContext = new SqlServerExpressionContext(exp, ResolveExpressType.WhereSingle); SqlServerExpressionContext expContext = new SqlServerExpressionContext();
expContext.Resolve(); 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>() {

View File

@ -32,8 +32,8 @@ namespace OrmTest.ExpressionTest
private void Multiple() private void Multiple()
{ {
Expression<Func<Student, School, object>> exp = (it, school) => new Student() { Name = "a", Id = it.Id, SchoolId = school.Id, TestId = it.Id + 1 }; Expression<Func<Student, School, object>> exp = (it, school) => new Student() { Name = "a", Id = it.Id, SchoolId = school.Id, TestId = it.Id + 1 };
ExpressionContext expContext = new ExpressionContext(exp, ResolveExpressType.SelectMultiple); ExpressionContext expContext = new ExpressionContext();
expContext.Resolve(); expContext.Resolve(exp, ResolveExpressType.SelectMultiple);
var selectorValue = expContext.Result.GetString(); var selectorValue = expContext.Result.GetString();
var pars = expContext.Parameters; var pars = expContext.Parameters;
base.Check( base.Check(
@ -48,8 +48,8 @@ namespace OrmTest.ExpressionTest
private void MultipleDynamic() private void MultipleDynamic()
{ {
Expression<Func<Student, School, object>> exp = (it, school) => new { Name = "a", Id = it.Id / 2, SchoolId = school.Id }; Expression<Func<Student, School, object>> exp = (it, school) => new { Name = "a", Id = it.Id / 2, SchoolId = school.Id };
ExpressionContext expContext = new ExpressionContext(exp, ResolveExpressType.SelectMultiple); ExpressionContext expContext = new ExpressionContext();
expContext.Resolve(); expContext.Resolve(exp, ResolveExpressType.SelectMultiple);
var selectorValue = expContext.Result.GetString(); var selectorValue = expContext.Result.GetString();
var pars = expContext.Parameters; var pars = expContext.Parameters;
base.Check( base.Check(
@ -64,8 +64,8 @@ namespace OrmTest.ExpressionTest
{ {
int p = 1; int p = 1;
Expression<Func<Student, object>> exp = it => new Student() { Name = "a", Id = it.Id, SchoolId = p,TestId=it.Id+1 }; Expression<Func<Student, object>> exp = it => new Student() { Name = "a", Id = it.Id, SchoolId = p,TestId=it.Id+1 };
ExpressionContext expContext = new ExpressionContext(exp, ResolveExpressType.SelectSingle); ExpressionContext expContext = new ExpressionContext();
expContext.Resolve(); expContext.Resolve(exp, ResolveExpressType.SelectSingle);
var selectorValue = expContext.Result.GetString(); var selectorValue = expContext.Result.GetString();
var pars = expContext.Parameters; var pars = expContext.Parameters;
base.Check( base.Check(
@ -82,8 +82,8 @@ namespace OrmTest.ExpressionTest
{ {
string a = "a"; string a = "a";
Expression<Func<Student, object>> exp = it => new { x = it.Id, shoolid = 1, name = a,p=it.Id*1 }; Expression<Func<Student, object>> exp = it => new { x = it.Id, shoolid = 1, name = a,p=it.Id*1 };
ExpressionContext expContext = new ExpressionContext(exp, ResolveExpressType.SelectSingle); ExpressionContext expContext = new ExpressionContext();
expContext.Resolve(); expContext.Resolve(exp, ResolveExpressType.SelectSingle);
var selectorValue = expContext.Result.GetString(); var selectorValue = expContext.Result.GetString();
var pars = expContext.Parameters; var pars = expContext.Parameters;
base.Check( base.Check(

View File

@ -35,8 +35,8 @@ namespace OrmTest.ExpressionTest
private void WhereMultiple1() private void WhereMultiple1()
{ {
Expression<Func<Student, bool>> exp = it => it.Id > 1; Expression<Func<Student, bool>> exp = it => it.Id > 1;
ExpressionContext expContext = new ExpressionContext(exp, ResolveExpressType.WhereMultiple); ExpressionContext expContext = new ExpressionContext();
expContext.Resolve(); expContext.Resolve(exp, ResolveExpressType.WhereMultiple);
var value = expContext.Result.GetString(); var value = expContext.Result.GetString();
var pars = expContext.Parameters; var pars = expContext.Parameters;
base.Check(value, pars, "( it.Id > @Id0 )", new List<SugarParameter>() { base.Check(value, pars, "( it.Id > @Id0 )", new List<SugarParameter>() {
@ -48,8 +48,8 @@ namespace OrmTest.ExpressionTest
string name = "a"; string name = "a";
WhereConst.name = "a1"; WhereConst.name = "a1";
Expression<Func<Student, bool>> exp = it => (it.Id > 1 && it.Name != name || it.Id == 1) || it.Name == WhereConst.name; Expression<Func<Student, bool>> exp = it => (it.Id > 1 && it.Name != name || it.Id == 1) || it.Name == WhereConst.name;
ExpressionContext expContext = new ExpressionContext(exp, ResolveExpressType.WhereMultiple); ExpressionContext expContext = new ExpressionContext();
expContext.Resolve(); expContext.Resolve(exp, ResolveExpressType.WhereMultiple);
var value = expContext.Result.GetString(); var value = expContext.Result.GetString();
var pars = expContext.Parameters; var pars = expContext.Parameters;
base.Check(value, pars, " (((( it.Id > @Id0 ) AND ( it.Name <> @Name1 )) OR ( it.Id = @Id2 )) OR ( it.Name = @Name3 ))", new List<SugarParameter>() { base.Check(value, pars, " (((( it.Id > @Id0 ) AND ( it.Name <> @Name1 )) OR ( it.Id = @Id2 )) OR ( it.Name = @Name3 ))", new List<SugarParameter>() {
@ -62,8 +62,8 @@ namespace OrmTest.ExpressionTest
private void whereSingle1() private void whereSingle1()
{ {
Expression<Func<Student, bool>> exp = it => it.Id > 1; Expression<Func<Student, bool>> exp = it => it.Id > 1;
ExpressionContext expContext = new ExpressionContext(exp, ResolveExpressType.WhereSingle); ExpressionContext expContext = new ExpressionContext();
expContext.Resolve(); 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 )", new List<SugarParameter>() { base.Check(value, pars, "( Id > @Id0 )", new List<SugarParameter>() {
@ -73,8 +73,8 @@ namespace OrmTest.ExpressionTest
private void whereSingle2() private void whereSingle2()
{ {
Expression<Func<Student, bool>> exp = it => 1 > it.Id; Expression<Func<Student, bool>> exp = it => 1 > it.Id;
ExpressionContext expContext = new ExpressionContext(exp, ResolveExpressType.WhereSingle); ExpressionContext expContext = new ExpressionContext();
expContext.Resolve(); 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 )", new List<SugarParameter>() { base.Check(value, pars, "( @Id0 > Id )", new List<SugarParameter>() {
@ -84,8 +84,8 @@ namespace OrmTest.ExpressionTest
private void whereSingle3() private void whereSingle3()
{ {
Expression<Func<Student, bool>> exp = it => it.Id > 1 || it.Name == "a"; Expression<Func<Student, bool>> exp = it => it.Id > 1 || it.Name == "a";
ExpressionContext expContext = new ExpressionContext(exp, ResolveExpressType.WhereSingle); ExpressionContext expContext = new ExpressionContext();
expContext.Resolve(); 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 ( Name = @Name1 ))", new List<SugarParameter>() { base.Check(value, pars, " (( Id > @Id0 ) OR ( Name = @Name1 ))", new List<SugarParameter>() {
@ -96,8 +96,8 @@ namespace OrmTest.ExpressionTest
private void whereSingle4() private void whereSingle4()
{ {
Expression<Func<Student, bool>> exp = it => (it.Id > 1 && it.Name != "a") || it.Name == "a1"; Expression<Func<Student, bool>> exp = it => (it.Id > 1 && it.Name != "a") || it.Name == "a1";
ExpressionContext expContext = new ExpressionContext(exp, ResolveExpressType.WhereSingle); ExpressionContext expContext = new ExpressionContext();
expContext.Resolve(); 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 ) AND ( Name <> @Name1 )) OR ( Name = @Name2 )) ", new List<SugarParameter>() { base.Check(value, pars, " ((( Id > @Id0 ) AND ( Name <> @Name1 )) OR ( Name = @Name2 )) ", new List<SugarParameter>() {
@ -111,8 +111,8 @@ namespace OrmTest.ExpressionTest
string name = "a"; string name = "a";
WhereConst.name = "a1"; WhereConst.name = "a1";
Expression<Func<Student, bool>> exp = it => (it.Id > 1 && it.Name != name) || it.Name == WhereConst.name; Expression<Func<Student, bool>> exp = it => (it.Id > 1 && it.Name != name) || it.Name == WhereConst.name;
ExpressionContext expContext = new ExpressionContext(exp, ResolveExpressType.WhereSingle); ExpressionContext expContext = new ExpressionContext();
expContext.Resolve(); 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 ) AND ( Name <> @Name1 )) OR ( Name = @Name2 )) ", new List<SugarParameter>() { base.Check(value, pars, " ((( Id > @Id0 ) AND ( Name <> @Name1 )) OR ( Name = @Name2 )) ", new List<SugarParameter>() {
@ -126,8 +126,8 @@ namespace OrmTest.ExpressionTest
string name = "a"; string name = "a";
WhereConst.name = "a1"; WhereConst.name = "a1";
Expression<Func<Student, bool>> exp = it => (it.Id > 1 && it.Name != name||it.Id==1) || it.Name == WhereConst.name; Expression<Func<Student, bool>> exp = it => (it.Id > 1 && it.Name != name||it.Id==1) || it.Name == WhereConst.name;
ExpressionContext expContext = new ExpressionContext(exp, ResolveExpressType.WhereSingle); ExpressionContext expContext = new ExpressionContext();
expContext.Resolve(); 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 ) AND ( Name <> @Name1 )) OR ( Id = @Id2 )) OR ( Name = @Name3 ))", new List<SugarParameter>() { base.Check(value, pars, " (((( Id > @Id0 ) AND ( Name <> @Name1 )) OR ( Id = @Id2 )) OR ( Name = @Name3 ))", new List<SugarParameter>() {

View File

@ -45,6 +45,7 @@
<ItemGroup> <ItemGroup>
<Compile Include="ExpressionTest\ExpTestBase.cs" /> <Compile Include="ExpressionTest\ExpTestBase.cs" />
<Compile Include="ExpressionTest\Field.cs" /> <Compile Include="ExpressionTest\Field.cs" />
<Compile Include="ExpressionTest\Join.cs" />
<Compile Include="ExpressionTest\Method.cs" /> <Compile Include="ExpressionTest\Method.cs" />
<Compile Include="ExpressionTest\Select.cs" /> <Compile Include="ExpressionTest\Select.cs" />
<Compile Include="ExpressionTest\Where.cs" /> <Compile Include="ExpressionTest\Where.cs" />

View File

@ -12,7 +12,7 @@ namespace SqlSugar
public partial class SqlServerExpressionContext : ExpressionContext, ILambdaExpressions public partial class SqlServerExpressionContext : ExpressionContext, ILambdaExpressions
{ {
public SqlSugarClient Context { get; set; } public SqlSugarClient Context { get; set; }
public SqlServerExpressionContext(Expression expression, ResolveExpressType resolveType) : base(expression, resolveType) public SqlServerExpressionContext()
{ {
base.DbMehtods = new SqlServerMethod(); base.DbMehtods = new SqlServerMethod();
} }