AsNoTracking() и включить
У меня есть запрос 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();
Ответы
Ответ 1
Используйте AsNoTracking после того, как вы выполнили все свои параметры запроса, но перед перемещением данных в память. В этом примере вам понадобятся:
context.MyEntity
.Include(i=> i.Nav1)
.Include(i=> i.Nav2)
.Where(x=> x.Prop1==1)
.AsNoTracking()
.FirstOrDefault();
Любые дочерние объекты родительского объекта не будут отслеживаться.