diff --git a/Src/Asp.Net/SqlSugar/Abstract/QueryableProvider/NavSelectHelper.cs b/Src/Asp.Net/SqlSugar/Abstract/QueryableProvider/NavSelectHelper.cs index 31f314088..2ac4e0172 100644 --- a/Src/Asp.Net/SqlSugar/Abstract/QueryableProvider/NavSelectHelper.cs +++ b/Src/Asp.Net/SqlSugar/Abstract/QueryableProvider/NavSelectHelper.cs @@ -14,7 +14,7 @@ namespace SqlSugar List result = new List (); var isSqlFunc = IsSqlFunc(expression, queryableProvider); var isClass = IsClass(expression, queryableProvider); - if (isSqlFunc && isGroup(expression, queryableProvider)) + if (isGroup(expression, queryableProvider)) { var sqlfuncQueryable = queryableProvider.Clone(); sqlfuncQueryable.QueryBuilder.Includes = null; @@ -92,11 +92,15 @@ namespace SqlSugar result = sqlfuncQueryable .Select(expression) .ToList(); - var includeList = queryableProvider.Clone().ToList(); + var selector = GetDefaultSelector(queryableProvider.Context.EntityMaintenance.GetEntityInfo(), queryableProvider.QueryBuilder); + var queryable = queryableProvider.Select(selector).Clone(); + queryable.QueryBuilder.NoCheckInclude = true; + var includeList = queryable.ToList(); MegerList(result, includeList, sqlfuncQueryable.Context); return result; } + internal static async Task> GetListAsync(Expression> expression, QueryableProvider queryableProvider) { List result = new List(); @@ -135,7 +139,8 @@ namespace SqlSugar { var entity = context.EntityMaintenance.GetEntityInfo(type); List selector = new List(); - foreach (var item in entity.Columns.Where(it=>it.IsIgnore==false)) + List columns = GetListNavColumns(entity); + foreach (var item in columns) { if (queryBuilder.TableShortName.HasValue()) { @@ -149,6 +154,40 @@ namespace SqlSugar return string.Join(",", selector); } + private static string GetDefaultSelector(EntityInfo entityInfo, QueryBuilder queryBuilder) + { + List columns = GetListNavColumns(entityInfo); + var selector = new List(); + if (columns.Count == 0) return null; + foreach (var item in columns) + { + if (queryBuilder.TableShortName.HasValue()) + { + selector.Add($" {queryBuilder.TableShortName}.{item.DbColumnName} as {item.DbColumnName}"); + } + else + { + selector.Add($" {item.DbColumnName} as {item.DbColumnName}"); + } + } + return string.Join(",", selector); + } + + private static List GetListNavColumns(EntityInfo entityInfo) + { + var list = entityInfo.Columns.Where(it => it.Navigat != null).Select( + it => it.Navigat.Name + ).ToArray(); + var list2 = entityInfo.Columns.Where(it => it.Navigat != null && it.Navigat.Name2 != null).Select( + it => it.Navigat.Name2 + ).ToArray(); + var columns = entityInfo.Columns.Where(it => it.IsPrimarykey || + list.Contains(it.PropertyName) || + list2.Contains(it.PropertyName) + ).ToList(); + return columns; + } + private static void MegerList(List result, List includeList,SqlSugarProvider context) { if (result.Count != includeList.Count) return;