AsNoTrace()和 Include

我有一个 Linq 查询,它获取一个实体及其一些导航属性。

context.MyEntity
.AsNoTracking()
.Include(i=> i.Nav1)
.Include(i=> i.Nav2)
.Where(x=> x.Prop1==1)
.FirstOrDefault();

我的问题是:

以上查询是否足以不跟踪 MyEntity或导航属性 NAv1 & Nav2,或者我必须为每个导航属性添加 AsNoTracking

像这样:

context.MyEntity
.AsNoTracking()
.Include(i=> i.Nav1)
.AsNoTracking()
.Include(i=> i.Nav2)
.AsNoTracking()
.Where(x=> x.Prop1==1)
.FirstOrDefault();
31577 次浏览

在完成所有查询参数之后,但在将数据移入内存之前,请使用 AsNoTrack。在这个例子中,您需要:

context.MyEntity
.Include(i=> i.Nav1)
.Include(i=> i.Nav2)
.Where(x=> x.Prop1==1)
.AsNoTracking()
.FirstOrDefault();

不会跟踪父实体的任何子对象。