diff --git a/Src/Asp.Net/SqlSugar/Abstract/QueryableProvider/NavigatManager.cs b/Src/Asp.Net/SqlSugar/Abstract/QueryableProvider/NavigatManager.cs index 886ef10ce..bcba232ee 100644 --- a/Src/Asp.Net/SqlSugar/Abstract/QueryableProvider/NavigatManager.cs +++ b/Src/Asp.Net/SqlSugar/Abstract/QueryableProvider/NavigatManager.cs @@ -727,11 +727,16 @@ namespace SqlSugar if (properyName != null) { var fkColumnsInfo = entityInfo.Columns.FirstOrDefault(x => x.PropertyName == properyName); + var pkColumnsInfo = entityInfo.Columns.FirstOrDefault(x => x.IsPrimarykey); if (fkColumnsInfo != null) { var fkName = fkColumnsInfo.DbColumnName; 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); + } } } } diff --git a/Src/Asp.Net/SqlSugar/Abstract/QueryableProvider/QueryableHelper.cs b/Src/Asp.Net/SqlSugar/Abstract/QueryableProvider/QueryableHelper.cs index e71b5f3e4..b8eaafa39 100644 --- a/Src/Asp.Net/SqlSugar/Abstract/QueryableProvider/QueryableHelper.cs +++ b/Src/Asp.Net/SqlSugar/Abstract/QueryableProvider/QueryableHelper.cs @@ -656,7 +656,12 @@ namespace SqlSugar } 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); if (navColumn != null && navColumn.Navigat.NavigatType != NavigateType.ManyToMany) { diff --git a/Src/Asp.Net/SqlSugar/ExpressionsToSql/Common/ExpressionTool.cs b/Src/Asp.Net/SqlSugar/ExpressionsToSql/Common/ExpressionTool.cs index da6212ddd..32269871e 100644 --- a/Src/Asp.Net/SqlSugar/ExpressionsToSql/Common/ExpressionTool.cs +++ b/Src/Asp.Net/SqlSugar/ExpressionsToSql/Common/ExpressionTool.cs @@ -215,6 +215,28 @@ namespace SqlSugar 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) { if (expression is MethodCallExpression)