This commit is contained in:
610262374@qq.com
2017-03-13 13:51:02 +08:00
parent 69b5ea419d
commit 0dc141faa9
7 changed files with 57 additions and 5 deletions

View File

@@ -34,9 +34,11 @@ namespace OrmTest.UnitTest
{
Console.WriteLine(sql+" " + pars);
};
var list = db.Queryable<Student>()
var list = db.Queryable<School,School>((st,st2)=>new object[] {
JoinType.Left,st.Id==st2.Id
})
.Where(st => st.Id > 0)
.Select(it => new ViewModelStudent { Name = it.Name }).ToList();
.Select(st => new ViewModelStudent { School=st}).ToList();
var list2 = db.Queryable<Student>()
.Where(st => st.Id > 0)

View File

@@ -87,6 +87,9 @@ namespace SqlSugar
var expression = this.SelectValue as Expression;
ILambdaExpressions resolveExpress = this.Context.LambdaExpressions;
var isSingle= Builder.LambadaQueryBuilder.JoinQueryInfos.IsValuable();
resolveExpress.JoinQueryInfos = Builder.LambadaQueryBuilder.JoinQueryInfos;
resolveExpress.MappingColumns = Context.MappingColumns;
resolveExpress.MappingTables = Context.MappingTables;
resolveExpress.Resolve(expression, ResolveType);
this.QueryPars.AddRange(resolveExpress.Parameters);
var reval= resolveExpress.Result.GetResultString();

View File

@@ -95,6 +95,10 @@ namespace SqlSugar
{
return new NewArrayExpessionResolve(parameter);
}
else if (expression is ParameterExpression)
{
return new TypeParameterExpressionReolve(parameter);
}
else if (expression != null && expression.NodeType.IsIn(ExpressionType.NewArrayBounds))
{
Check.ThrowNotSupportedException("ExpressionType.NewArrayBounds");

View File

@@ -87,7 +87,9 @@ namespace SqlSugar
}
else if (item.Type.IsClass())
{
string prefix = Context.IsJoin ? memberName : "";
base.Expression = item;
base.Start();
var shortName = parameter.CommonTempData;
var listProperties = item.Type.GetProperties().Cast<PropertyInfo>().ToList();
foreach (var property in listProperties)
{
@@ -97,14 +99,15 @@ namespace SqlSugar
}
else
{
var asName =memberName+"_"+property.Name;
var columnName = property.Name;
if (Context.IsJoin)
{
base.Context.Result.Append(Context.GetAsString(property.Name, columnName,""));
base.Context.Result.Append(Context.GetAsString(asName, columnName, shortName.ObjToString()));
}
else
{
base.Context.Result.Append(Context.GetAsString(property.Name, columnName));
base.Context.Result.Append(Context.GetAsString(asName, columnName));
}
}
}

View File

@@ -0,0 +1,36 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Linq.Expressions;
using System.Text;
using System.Threading.Tasks;
namespace SqlSugar
{
public class TypeParameterExpressionReolve : BaseResolve
{
public TypeParameterExpressionReolve(ExpressionParameter parameter) : base(parameter)
{
var expression = (ParameterExpression)base.Expression;
switch (parameter.Context.ResolveType)
{
case ResolveExpressType.WhereSingle:
break;
case ResolveExpressType.WhereMultiple:
break;
case ResolveExpressType.SelectSingle:
case ResolveExpressType.SelectMultiple:
parameter.BaseParameter.CommonTempData = expression.Name;
break;
case ResolveExpressType.FieldSingle:
break;
case ResolveExpressType.FieldMultiple:
break;
case ResolveExpressType.Join:
break;
default:
break;
}
}
}
}

View File

@@ -8,6 +8,9 @@ namespace SqlSugar
{
public partial interface ILambdaExpressions
{
MappingColumnList MappingColumns { get; set; }
MappingTableList MappingTables { get; set; }
List<JoinQueryInfo> JoinQueryInfos { get; set; }
SqlSugarClient Context { get; set; }
IDbMethods DbMehtods { get; set; }
Expression Expression { get; set; }

View File

@@ -124,6 +124,7 @@
<Compile Include="ExpressionsToSql\ResolveItems\NewArrayExpessionResolve.cs" />
<Compile Include="ExpressionsToSql\ResolveItems\NewExpressionResolve.cs" />
<Compile Include="ExpressionsToSql\ResolveItems\SimpleBinaryExpressionResolve.cs" />
<Compile Include="ExpressionsToSql\ResolveItems\TypeParameterExpressionReolve.cs" />
<Compile Include="ExpressionsToSql\ResolveItems\UnaryExpressionResolve.cs" />
<Compile Include="ExpressionsToSql\Common\ExpResolveAccessory.cs" />
<Compile Include="ExpressionsToSql\ExpressionContext.cs" />