追跡なしクエリ

場合によっては、クエリの結果からエンティティを取得し、それらのエンティティがコンテキストによって追跡されないようにしたい場合があります。 そうすることで、読み取り専用シナリオで多数のエンティティに対してクエリを実行したときに、パフォーマンスが向上する場合があります。 このトピックで紹介するテクニックは、Code First および EF Designer で作成されたモデルに等しく使用できます。

新しい拡張メソッド AsNoTracking を使用すると、任意のクエリをこの方法で実行できます。 次に例を示します。

using (var context = new BloggingContext())
{
    // Query for all blogs without tracking them
    var blogs1 = context.Blogs.AsNoTracking();

    // Query for some blogs without tracking them
    var blogs2 = context.Blogs
                        .Where(b => b.Name.Contains(".NET"))
                        .AsNoTracking()
                        .ToList();
}