mirror of
https://gitee.com/dotnetchina/SqlSugar.git
synced 2025-04-24 18:04:52 +08:00
-
This commit is contained in:
parent
e576aca96b
commit
2f3b6b0991
@ -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;
|
||||
}
|
||||
}
|
||||
|
@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -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()
|
||||
|
Loading…
Reference in New Issue
Block a user