This commit is contained in:
sunkaixuan 2017-02-27 01:03:56 +08:00
parent 493d1a414d
commit e7b0271487
9 changed files with 105 additions and 16 deletions

View File

@ -3,10 +3,36 @@ using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using SqlSugar;
using System.Linq.Expressions;
using OrmTest.Models;
namespace OrmTest.ExpressionTest
{
public class Join
public class Join : ExpTestBase
{
private Join() { }
public Join(int eachCount)
{
this.Count = eachCount;
}
internal void Init()
{
base.Begin();
for (int i = 0; i < base.Count; i++)
{
Q2();
}
base.End("Method Test");
}
public void Q2()
{
ExpressionContext contet = new ExpressionContext();
SqlSugarClient db = new SqlSugarClient(new SystemTablesConfig() { ConnectionString="x" ,DbType= DbType.SqlServer });
db.Queryable<Student, School>((st,sc)=> new object[] {
JoinType.Left,st.SchoolId==sc.Id
});
}
}
}

View File

@ -22,6 +22,7 @@ namespace OrmTest
new OrmTest.ExpressionTest.Field(eachCount).Init();
new OrmTest.ExpressionTest.Where(eachCount).Init();
new OrmTest.ExpressionTest.Method(eachCount).Init();
new OrmTest.ExpressionTest.Join(eachCount).Init();
}
}
}

View File

@ -0,0 +1,12 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace SqlSugar
{
public class SqlServerLambadaQueryBuilder: LambadaQueryBuilder
{
}
}

View File

@ -11,6 +11,7 @@ namespace SqlSugar
SelectSingle=2,
SelectMultiple=3,
FieldSingle=4,
FieldMultiple=5
FieldMultiple=5,
Join=6
}
}

View File

@ -91,9 +91,13 @@ namespace SqlSugar
{
return new NewExpressionResolve(parameter);
}
else if (expression != null && expression.NodeType.IsIn(ExpressionType.NewArrayBounds, ExpressionType.NewArrayInit))
else if (expression is NewArrayExpression)
{
Check.ThrowNotSupportedException("ExpressionType.NewArrayBounds and ExpressionType.NewArrayInit");
return new NewArrayExpessionResolve(parameter);
}
else if (expression != null && expression.NodeType.IsIn(ExpressionType.NewArrayBounds))
{
Check.ThrowNotSupportedException("ExpressionType.NewArrayBounds");
}
return null;
}

View File

@ -0,0 +1,40 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Linq.Expressions;
using System.Text;
using System.Threading.Tasks;
namespace SqlSugar
{
public class NewArrayExpessionResolve : BaseResolve
{
public NewArrayExpessionResolve(ExpressionParameter parameter) : base(parameter)
{
var expression = (NewArrayExpression)base.Expression;
switch (base.Context.ResolveType)
{
case ResolveExpressType.WhereSingle:
case ResolveExpressType.WhereMultiple:
case ResolveExpressType.SelectSingle:
case ResolveExpressType.SelectMultiple:
case ResolveExpressType.FieldSingle:
case ResolveExpressType.FieldMultiple:
Check.ThrowNotSupportedException("NewArrayExpression");
break;
case ResolveExpressType.Join:
base.Context.ResolveType = ResolveExpressType.WhereMultiple;
foreach (var item in expression.Expressions)
{
var value = ((ConstantExpression)item).Value;
var isJoinType = value is JoinType;
//string value = "";
//base.AppendValue();
}
break;
default:
break;
}
}
}
}

View File

@ -82,6 +82,7 @@
<Compile Include="Databases\SqlServer\Db\DbFirst\SqlServerDbFirst.cs" />
<Compile Include="Databases\SqlServer\Db\SqlBuilder\SqlServerBuilder.cs" />
<Compile Include="Databases\SqlServer\Db\SqlBuilder\SqlServerDbMaintenance.cs" />
<Compile Include="Databases\SqlServer\Db\SqlBuilder\SqlServerLambadaQueryBuilder.cs" />
<Compile Include="Databases\SqlServer\Db\SqlServerDb.cs" />
<Compile Include="Databases\SqlServer\Queryable\SqlServerQueryable.cs" />
<Compile Include="Databases\SqlServer\Sqlable\SqlServerSqlable.cs" />
@ -122,6 +123,7 @@
<Compile Include="ExpressionsToSql\ResolveItems\LambdaExpressionResolve.cs" />
<Compile Include="ExpressionsToSql\ResolveItems\MemberExpressionResolve.cs" />
<Compile Include="ExpressionsToSql\ResolveItems\MethodCallExpressionResolve.cs" />
<Compile Include="ExpressionsToSql\ResolveItems\NewArrayExpessionResolve.cs" />
<Compile Include="ExpressionsToSql\ResolveItems\NewExpressionResolve.cs" />
<Compile Include="ExpressionsToSql\ResolveItems\SimpleBinaryExpressionResolve.cs" />
<Compile Include="ExpressionsToSql\ResolveItems\UnaryExpressionResolve.cs" />

View File

@ -103,7 +103,9 @@ namespace SqlSugar
protected List<JoinQueryInfo> GetJoinInfos(Expression joinExpression, SqlSugarClient context)
{
throw new NotImplementedException();
ExpressionContext exp = new ExpressionContext();
exp.Resolve(joinExpression, ResolveExpressType.Join);
return null;
}
}
}

View File

@ -141,12 +141,13 @@ namespace SqlSugar
}
return (ISugarQueryable<T>)_Queryable;
}
public virtual List<T> Queryable<T, T2>(Expression<Func<T,T2,object []>> joinExpression) where T : class, new()
public virtual ISugarQueryable<T> Queryable<T, T2>(Expression<Func<T,T2,object []>> joinExpression) where T : class, new()
{
var queryable = Queryable<T>();
SqlBuilder.LambadaQueryBuilder.JoinQueryInfos = base.GetJoinInfos(joinExpression,this);
return null;
return queryable;
}
public virtual List<T> Queryable<T, T2, T3>(Func<T, T2,T3, object[]> joinExpression) where T : class, new()
public virtual ISugarQueryable<T> Queryable<T, T2, T3>(Func<T, T2,T3, object[]> joinExpression) where T : class, new()
{
return null;
}
@ -154,27 +155,27 @@ namespace SqlSugar
{
return null;
}
public virtual List<T> Queryable<T, T2, T3, T4, T5>(Func<T, T2, T3, T4,T5, object[]> joinExpression) where T : class, new()
public virtual ISugarQueryable<T> Queryable<T, T2, T3, T4, T5>(Func<T, T2, T3, T4,T5, object[]> joinExpression) where T : class, new()
{
return null;
}
public virtual List<T> Queryable<T, T2, T3, T4, T5, T6>(Func<T, T2, T3, T4, T5,T6, object[]> joinExpression) where T : class, new()
public virtual ISugarQueryable<T> Queryable<T, T2, T3, T4, T5, T6>(Func<T, T2, T3, T4, T5,T6, object[]> joinExpression) where T : class, new()
{
return null;
}
public virtual List<T> Queryable<T, T2, T3, T4, T5, T6, T7>(Func<T, T2, T3, T4, T5, T6,T7, object[]> joinExpression) where T : class, new()
public virtual ISugarQueryable<T> Queryable<T, T2, T3, T4, T5, T6, T7>(Func<T, T2, T3, T4, T5, T6,T7, object[]> joinExpression) where T : class, new()
{
return null;
}
public virtual List<T> Queryable<T, T2, T3, T4, T5, T6, T7, T8>(Func<T, T2, T3, T4, T5, T6,T7,T8, object[]> joinExpression) where T : class, new()
public virtual ISugarQueryable<T> Queryable<T, T2, T3, T4, T5, T6, T7, T8>(Func<T, T2, T3, T4, T5, T6,T7,T8, object[]> joinExpression) where T : class, new()
{
return null;
}
public virtual List<T> Queryable<T, T2, T3, T4, T5, T6, T7, T8, T9>(Func<T, T2, T3, T4, T5, T6, T7, T8,T9, object[]> joinExpression) where T : class, new()
public virtual ISugarQueryable<T> Queryable<T, T2, T3, T4, T5, T6, T7, T8, T9>(Func<T, T2, T3, T4, T5, T6, T7, T8,T9, object[]> joinExpression) where T : class, new()
{
return null;
}
public virtual List<T> Queryable<T, T2, T3, T4, T5, T6, T7, T8, T9, T10>(Func<T, T2, T3, T4, T5, T6, T7, T8,T10, object[]> joinExpression) where T : class, new()
public virtual ISugarQueryable<T> Queryable<T, T2, T3, T4, T5, T6, T7, T8, T9, T10>(Func<T, T2, T3, T4, T5, T6, T7, T8,T10, object[]> joinExpression) where T : class, new()
{
return null;
}