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();

Любые дочерние объекты родительского объекта не будут отслеживаться.