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

EF6中Include函数对同一关联实体的查询次数疑问

EF6中Include函数的查询执行逻辑

针对你提到的场景,当执行这段代码时:

Son son = context.Sons.Where(x => ids.Contains(x.id))
    .Include(x => x.Father)
    .Include(x => x.Father.Brother)
    .FirstOrDefault();

EF6只会生成一次SQL查询,不会为每个子实体分别执行查询。

具体逻辑如下:

  • Include的本质是通过SQL JOIN操作,将关联实体的数据一次性加载到查询结果中,不管有多少个子实体关联同一个父实体,EF6都会在单个查询中完成所有关联数据的获取。
  • 即使多个Son实例指向同一个FatherABC实体,EF6的上下文会自动处理实体的重复引用,不会重复创建FatherABC对象,而是将所有关联的Son实例指向内存中同一个FatherABC实例,同时其关联的Brother实体也会被一次性加载。

简言之,无论关联的父实体是否重复,Include指定的导航属性都会通过单次查询完成数据加载,不会产生多次查询的情况。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 11:55:16