web-dev-qa-db-fra.com

AsNoTracking () et Inclure

J'ai une requête Linq qui récupère une entité et certaines de ses propriétés de navigation.

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

ma question est:

La requête ci-dessus est-elle suffisante pour ne pas suivre MyEntity ni les propriétés de navigation NAv1 & Nav2 ou dois-je ajouter AsNoTracking pour chaque propriété de navigation?

comme ça:

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

Utilisez AsNoTracking après avoir terminé tous vos paramètres de requête mais avant de déplacer les données en mémoire. Dans cet exemple, vous aurez besoin de:

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

Aucun objet enfant de l'entité parent ne sera suivi.

26
Daniel