我有一个可获取实体及其某些导航属性的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();
最佳答案
在完成所有查询参数之后但将数据移入内存之前,请使用AsNoTracking。在此示例中,您需要:
context.MyEntity
.Include(i=> i.Nav1)
.Include(i=> i.Nav2)
.Where(x=> x.Prop1==1)
.AsNoTracking()
.FirstOrDefault();
父实体的任何子对象将不会被跟踪。
关于c# - AsNoTracking()和包含,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/42002540/