mirror of
https://gitee.com/dotnetchina/SqlSugar.git
synced 2025-07-16 07:57:33 +08:00
Update nav query
This commit is contained in:
parent
ef61213adc
commit
bd3f1db4a0
@ -727,11 +727,16 @@ namespace SqlSugar
|
|||||||
if (properyName != null)
|
if (properyName != null)
|
||||||
{
|
{
|
||||||
var fkColumnsInfo = entityInfo.Columns.FirstOrDefault(x => x.PropertyName == properyName);
|
var fkColumnsInfo = entityInfo.Columns.FirstOrDefault(x => x.PropertyName == properyName);
|
||||||
|
var pkColumnsInfo = entityInfo.Columns.FirstOrDefault(x => x.IsPrimarykey);
|
||||||
if (fkColumnsInfo != null)
|
if (fkColumnsInfo != null)
|
||||||
{
|
{
|
||||||
var fkName = fkColumnsInfo.DbColumnName;
|
var fkName = fkColumnsInfo.DbColumnName;
|
||||||
AppColumns(result, queryable, fkName);
|
AppColumns(result, queryable, fkName);
|
||||||
}
|
}
|
||||||
|
if (pkColumnsInfo!=null&&fkColumnsInfo == null&&result.SelectString != null && !result.SelectString.Contains(queryable.SqlBuilder.GetTranslationColumnName(pkColumnsInfo.DbColumnName)))
|
||||||
|
{
|
||||||
|
AppColumns(result, queryable, pkColumnsInfo.DbColumnName);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -656,7 +656,12 @@ namespace SqlSugar
|
|||||||
}
|
}
|
||||||
foreach (var item in navManages)
|
foreach (var item in navManages)
|
||||||
{
|
{
|
||||||
var navName = ExpressionTool.GetMemberName(item.Expressions.First());
|
var FirstExp = item.Expressions.First();
|
||||||
|
var navName = ExpressionTool.GetMemberName(FirstExp);
|
||||||
|
if (FirstExp is LambdaExpression &&ExpressionTool.GetMethodName((FirstExp as LambdaExpression).Body) == "ToList")
|
||||||
|
{
|
||||||
|
navName = ExpressionTool.GetFirstTypeNameFromExpression(FirstExp);
|
||||||
|
}
|
||||||
var navColumn = entityColumns.Where(it => it.IsPrimarykey == false).Where(it => it.Navigat != null).FirstOrDefault(it => it.PropertyName == navName);
|
var navColumn = entityColumns.Where(it => it.IsPrimarykey == false).Where(it => it.Navigat != null).FirstOrDefault(it => it.PropertyName == navName);
|
||||||
if (navColumn != null && navColumn.Navigat.NavigatType != NavigateType.ManyToMany)
|
if (navColumn != null && navColumn.Navigat.NavigatType != NavigateType.ManyToMany)
|
||||||
{
|
{
|
||||||
|
@ -215,6 +215,28 @@ namespace SqlSugar
|
|||||||
return newExp;
|
return newExp;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public static string GetFirstTypeNameFromExpression(Expression expression)
|
||||||
|
{
|
||||||
|
if (expression is LambdaExpression lambda)
|
||||||
|
{
|
||||||
|
return GetFirstTypeNameFromExpression(lambda.Body);
|
||||||
|
}
|
||||||
|
else if (expression is MemberExpression member)
|
||||||
|
{
|
||||||
|
return member.Member.Name;
|
||||||
|
}
|
||||||
|
else if (expression is NewExpression newExpr)
|
||||||
|
{
|
||||||
|
return newExpr.Type.Name;
|
||||||
|
}
|
||||||
|
else if (expression is MethodCallExpression methodCall)
|
||||||
|
{
|
||||||
|
return GetFirstTypeNameFromExpression(methodCall.Arguments.FirstOrDefault());
|
||||||
|
}
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
|
||||||
public static string GetMethodName(Expression expression)
|
public static string GetMethodName(Expression expression)
|
||||||
{
|
{
|
||||||
if (expression is MethodCallExpression)
|
if (expression is MethodCallExpression)
|
||||||
|
Loading…
Reference in New Issue
Block a user