You need to enable JavaScript to run this app. LINQ查询中加载Hearing子实体集合Digital_Content时Include报错的问题
优惠活动
大模型
产品
解决方案
定价
更多

LINQ查询中加载Hearing子实体集合Digital_Content时Include报错的问题

问题根因

EF Core 的 Include 操作仅能识别实体类中声明的 符合规范的公共导航属性,当前代码存在两个关键偏差,直接对应你遇到的两个现象:

  • 你在 Hearing 类中将关联集合 digital_Contents 定义为公开字段,而非带 get/set 访问器的属性,EF Core 无法将其识别为合法的导航配置,因此直接抛出属性访问无效的异常。
  • 由于该字段从未被EF Core识别为导航属性,不使用 Include 时EF也不会自动为其填充关联的 Digital_Content 数据,最终返回的集合始终为空。
修正步骤
  1. 调整 Hearing 类的关联集合定义,将公开字段替换为标准的公共导航属性,保留原有的空集合初始化逻辑:
    public class Hearing
    {
        [Key]
        public int Id { get; set; }
        public int HearingNumber { get; set; }
        public DateTime? End_Date { get; set; }
    
        // 从公开字段修改为带get/set的自动属性,保留集合初始化逻辑
        public ICollection<Digital_Content> digital_Contents { get; set; } = new List<Digital_Content>();
    }
    
  2. 修改完成后,你原有查询逻辑无需调整即可正常运行:
    var ListHearings = await _context.Hearing
        .Where(h => h.HearingNumber == 55)
        .Include(h => h.digital_Contents)
        .ToListAsync();
    
注意事项
  • EF Core 对导航属性的识别要求:必须是公共成员、具备 get/set 访问器,字段形式的关联集合无论访问修饰符是什么,都无法被EF Core的模型构建器识别为导航关系。
  • 调整代码后可在EF Core的模型配置调试日志中,确认 Hearing 和 Digital_Content 之间的一对多关系被正确识别,即可验证配置生效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.25 07:06:07