This commit is contained in:
610262374@qq.com 2017-03-03 19:32:26 +08:00
parent e576aca96b
commit 2f3b6b0991
3 changed files with 32 additions and 11 deletions

View File

@ -33,7 +33,7 @@ namespace SqlSugar
base.Start();
if (parameter.CommonTempData is JoinType)
{
base.Context.Result.Append(parameter.CommonTempData.ObjToString().ToUpper() + " JOIN ,{" + i + "}");
base.Context.Result.Append(parameter.CommonTempData.ObjToString()+ ",{" + i + "}");
++i;
}
}

View File

@ -101,24 +101,45 @@ namespace SqlSugar
});
}
protected List<JoinQueryInfo> GetJoinInfos(Expression joinExpression, SqlSugarClient context,params Type [] entityTypeArray)
protected List<JoinQueryInfo> GetJoinInfos(Expression joinExpression, SqlSugarClient context, params Type[] entityTypeArray)
{
List<JoinQueryInfo> reval=new List<JoinQueryInfo>();
var lambdaParameters = ((LambdaExpression) joinExpression).Parameters;
List<JoinQueryInfo> reval = new List<JoinQueryInfo>();
var lambdaParameters = ((LambdaExpression)joinExpression).Parameters.ToList();
ExpressionContext exp = new ExpressionContext();
exp.MappingColumns = context.MappingColumns;
exp.MappingTables = context.MappingTables;
exp.Resolve(joinExpression, ResolveExpressType.Join);
int i = 0;
var joinArray = exp.Result.GetResultArray();
foreach (var type in entityTypeArray)
{
JoinQueryInfo joinInfo = new JoinQueryInfo()
var isFirst = i == 0;
++i;
JoinQueryInfo joinInfo = new JoinQueryInfo();
var hasMappingTable = exp.MappingTables.IsValuable();
if (hasMappingTable)
{
};
var mappingInfo = exp.MappingTables.FirstOrDefault(it => it.EntityName.Equals(type.Name, StringComparison.CurrentCultureIgnoreCase));
joinInfo.TableName = mappingInfo != null ? mappingInfo.DbTableName : type.Name;
}
else
{
joinInfo.TableName = type.Name;
}
if (isFirst)
{
var firstItem = lambdaParameters.First();
joinInfo.PreShortName = firstItem.Name;
lambdaParameters.Remove(firstItem);
}
var joinString = joinArray[i * 2 - 2];
joinInfo.ShortName = lambdaParameters[i-1].Name;
joinInfo.JoinType = (JoinType) Enum.Parse(typeof (JoinType), joinString);
joinInfo.JoinWhere = joinArray[i * 2];
joinInfo.JoinIndex = i;
reval.Add((joinInfo));
}
var joinArray = exp.Result.GetResultArray();
return null;
return reval;
}
}
}

View File

@ -144,7 +144,7 @@ namespace SqlSugar
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,typeof(T), typeof(T2));
SqlBuilder.LambadaQueryBuilder.JoinQueryInfos = base.GetJoinInfos(joinExpression,this,typeof(T2));
return queryable;
}
public virtual ISugarQueryable<T> Queryable<T, T2, T3>(Func<T, T2,T3, object[]> joinExpression) where T : class, new()