7
実際、エンティティとそのナビゲーションプロパティの一部を取得するLinqクエリがあります。AsNoTracking()とInclude
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'が必要です。私は、2番目のものは実行時例外をスローすると信じています(どれがどちらか分かりません)。 – Igor
複数のLINQメソッドを連結する場合、返されたシーケンスは常に以前のメソッドから次のメソッドに渡されます。だから 'AsNoTracking'の後に返されたエンティティがキャッシュされないクエリがある –
あなたの助けにTks –