AsNoTracking() and Include
I have a Linq query that fetches an entity and some of its navigation properties.
context.MyEntity
.AsNoTracking()
.Include(i=> i.Nav1)
.Include(i=> i.Nav2)
.Where(x=> x.Prop1==1)
.FirstOrDefault();
my question is:
Is the above query enough to not track MyEntity
nor the navigation properties NAv1
& Nav2
or must I add AsNoTracking
for each navigation property?
like this:
context.MyEntity
.AsNoTracking()
.Include(i=> i.Nav1)
.AsNoTracking()
.Include(i=> i.Nav2)
.AsNoTracking()
.Where(x=> x.Prop1==1)
.FirstOrDefault();
Use AsNoTracking after you have completed all your query parameters but before you move the data into memory. In this example, you'll want:
context.MyEntity
.Include(i=> i.Nav1)
.Include(i=> i.Nav2)
.Where(x=> x.Prop1==1)
.AsNoTracking()
.FirstOrDefault();
Any child objects of the parent entity will not be tracked.