fix(content): 修复导航列表查询EF Core LINQ翻译错误
- 将Dictionary.ContainsKey()从Select投影中移出 - 改为查询后在内存中映射StatusName - 添加GetNavigationStatusName辅助方法
This commit is contained in:
parent
951536357a
commit
fdf4fc7eca
|
|
@ -564,6 +564,16 @@ public class ContentService : IContentService
|
|||
{ 1, "已上线" }
|
||||
};
|
||||
|
||||
/// <summary>
|
||||
/// 获取导航状态名称
|
||||
/// </summary>
|
||||
/// <param name="status">状态值</param>
|
||||
/// <returns>状态名称</returns>
|
||||
private static string GetNavigationStatusName(int status)
|
||||
{
|
||||
return NavigationStatusNames.TryGetValue(status, out var name) ? name : "未知";
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 验证 Position 值
|
||||
/// </summary>
|
||||
|
|
@ -612,11 +622,16 @@ public class ContentService : IContentService
|
|||
LinkUrl = n.LinkUrl,
|
||||
Sort = n.Sort,
|
||||
Status = n.Status,
|
||||
StatusName = NavigationStatusNames.ContainsKey(n.Status) ? NavigationStatusNames[n.Status] : "未知",
|
||||
CreateTime = n.CreateTime
|
||||
})
|
||||
.ToListAsync();
|
||||
|
||||
// 在内存中映射状态名称(避免 EF Core LINQ 翻译问题)
|
||||
foreach (var item in items)
|
||||
{
|
||||
item.StatusName = GetNavigationStatusName(item.Status);
|
||||
}
|
||||
|
||||
return PagedResult<HomeNavigationDto>.Create(items, total, request.Page, request.PageSize);
|
||||
}
|
||||
|
||||
|
|
@ -634,7 +649,6 @@ public class ContentService : IContentService
|
|||
LinkUrl = n.LinkUrl,
|
||||
Sort = n.Sort,
|
||||
Status = n.Status,
|
||||
StatusName = NavigationStatusNames.ContainsKey(n.Status) ? NavigationStatusNames[n.Status] : "未知",
|
||||
CreateTime = n.CreateTime
|
||||
})
|
||||
.FirstOrDefaultAsync();
|
||||
|
|
@ -644,6 +658,9 @@ public class ContentService : IContentService
|
|||
throw new BusinessException(ErrorCodes.NavigationNotFound, "首页导航不存在");
|
||||
}
|
||||
|
||||
// 在内存中映射状态名称
|
||||
nav.StatusName = GetNavigationStatusName(nav.Status);
|
||||
|
||||
return nav;
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user