Entity Framework中顶层实体调用AsNoTracking是否作用于Include的子实体
Entity Framework中AsNoTracking对关联实体的作用范围说明
结论
只需要在顶层查询调用一次AsNoTracking即可,该配置会自动应用到所有通过Include、ThenInclude关联查询返回的子实体、嵌套子实体,不需要为每个关联查询单独重复调用。
具体说明
AsNoTracking属于查询级别的全局配置,一旦对当前IQueryable对象调用该方法,整个查询链路的所有逻辑都会继承无跟踪属性,所有最终从查询中返回的实体(无论层级)都不会被EF上下文的变更跟踪器管理。- 你给出的第二种重复调用
AsNoTracking的写法完全没有必要,重复调用该方法不会产生任何额外效果,和只在顶层调用一次的执行结果完全一致。
该行为在EF6、所有版本的EF Core中均保持一致,无版本差异。如果要对整个上下文全局启用无跟踪,也可以直接修改上下文的
ChangeTracker.QueryTrackingBehavior属性为QueryTrackingBehavior.NoTracking,后续所有该上下文发起的查询默认都会继承无跟踪配置,不需要再单独调用AsNoTracking。
内容的提问来源于stack exchange,提问作者Pawan Nogariya
相关产品推荐
相关产品推荐

