7
其实我有一个Linq查询来获取一个实体及其一些导航属性。AsNoTracking()和包括
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',因此您的第一个示例是正确的。我相信第二个会抛出一个运行时异常(不知道哪一个)。 – Igor
如果您链接多个LINQ方法,则始终将返回的序列从先前的方法传递到以下方法。因此,在'AsNoTracking'之后,你有一个查询返回的实体不会被缓存 –
Tks for your help –