You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

.NET5迁移至.NET8后EF Core警告NavigationBaseIncludeIgnored解决咨询

解决.NET 8 EF Core 'Microsoft.EntityFrameworkCore.Query.NavigationBaseIncludeIgnored'警告

警告原因

EF Core 6及以上版本的自动修复机制会自动填充实体间的反向导航属性。你查询的是Documents并已Include了Tasks,那么每个TaskEntity的Document导航属性会被EF自动关联到当前查询的Document实体,无需手动Include,重复Include会被EF忽略并触发该警告。

改写后的查询代码

var document = await _context.Documents
    // 加载Tasks及关联层级,无需Include Task.Document(自动修复填充)
    .Include(doc => doc.Tasks)
        .ThenInclude(task => task.Workplace)
            .ThenInclude(workplace => workplace.WorkplaceUsers)
                .ThenInclude(wpUser => wpUser.User)
    // 加载当前Document的RouteStepValues及关联
    .Include(doc => doc.RouteStepValues)
        .ThenInclude(rsv => rsv.RouteStepValueProperties)
    .Include(doc => doc.RouteStepValues)
        .ThenInclude(rsv => rsv.Element)
            .ThenInclude(element => element.ElementProperties)
    .Include(doc => doc.RouteStepValues)
        .ThenInclude(rsv => rsv.Document)
            .ThenInclude(doc => doc.DocumentType)
                .ThenInclude(dt => dt.Components)
                    .ThenInclude(comp => comp.ComponentProperties)
    .Include(doc => doc.RouteStepValues)
        .ThenInclude(rsv => rsv.Document)
            .ThenInclude(doc => doc.DocumentType)
                .ThenInclude(dt => dt.Components)
                    .ThenInclude(comp => comp.ComponentElements)
                        .ThenInclude(ce => ce.Element)
                            .ThenInclude(element => element.ElementProperties)
    .Include(doc => doc.RouteStepValues)
        .ThenInclude(rsv => rsv.Document)
            .ThenInclude(doc => doc.DocumentAttributes)
    .Include(doc => doc.RouteStepValues)
        .ThenInclude(rsv => rsv.Document)
            .ThenInclude(doc => doc.CardFieldValues)
                .ThenInclude(cfv => cfv.Element)
                    .ThenInclude(element => element.ElementPropertyDependencies)
                        .ThenInclude(dep => dep.ElementProperty)
    .Include(doc => doc.RouteStepValues)
        .ThenInclude(rsv => rsv.Document)
            .ThenInclude(doc => doc.ParentDocument)
                .ThenInclude(parentDoc => parentDoc.CardFieldValues)
                    .ThenInclude(cfv => cfv.Element)
                        .ThenInclude(element => element.ElementPropertyDependencies)
                            .ThenInclude(dep => dep.ElementProperty)
    // 直接加载当前Document的父文档,替代原通过Task.Document的冗余路径
    .Include(doc => doc.ParentDocument)
    .AsSplitQuery()
    .FirstOrDefaultAsync(doc => doc.Id == request.DocumentId);

关键改动说明

  • 移除冗余Include:删除所有.Include(t => t.Tasks).ThenInclude(t => t.Document)层级,依赖EF自动修复机制填充反向导航。
  • 调整父文档加载路径:原通过Task.Document.ParentDocument加载父文档,改为直接Includedoc.ParentDocument,避免冗余关联链。
  • 保留有效关联链:所有从RouteStepValues.Document出发的深层关联保留,确保DocumentType、DocumentAttributes等属性被正确加载。

内容的提问来源于stack exchange,提问作者Web FR

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.21 18:40:17