2013-08-08 24 views
11

パフォーマンス向上のためにAsNoTrackingをLINQの選択クエリに使用することに興味があります。私はコードファーストでEntity Framework 5を使用しています。メソッド構文の代わりにLINQクエリ構文を使用したAsNoTracking

ただし、すべてのクエリはLINQクエリ構文を使用して記述され、すべてのAsNoTrackingサンプルはMethod構文を使用して表示されます。私はAsNoTrackingがMethod構文のために作成されたことに気付いていますが、Query構文で同じことを達成するにはどうしたらいいですか?

+0

それは各呼び出しのEFの連絡先データソースをすることができますのでAsNoTrackingが、パフォーマンスは向上しません。トラッキングはキャッシングも行い、パフォーマンスを向上させます。 – Robert

+0

こんにちはRobertさん、興味深いのは、AsNoTracking()が、更新を行うことなくSELECTを使用してパフォーマンスを向上させることを指摘する記事をたくさん読んだからです。すなわち、http://blog.staticvoid.co.nz/2012/4/2/entity_framework_and_asnotracking – Mitch

+0

正確に言うと、以前にフェッチされていないデータをフェッチするとき、AsNoTrackingは確かに高速です。所望のデータが既に存在する(もちろん、これが最も速い)。 – Robert

答えて

18

あなたはDbSetAsNoTracking()を適用します。

+0

これは私が探していた答えでした! – Mitch

1

クエリ構文はコンパイラによるメソッド構文に置き換えられているため、最後には違いはありません。

+0

私はQuery構文でAsNoTracking()を使用しようとしましたが、オプションとしてIntellisenseに表示されません。 – Mitch

+0

今後の考えでは、私はそれを正しく使用していないか、ライブラリがないのでしょうか?つまり、var result =(ctx.People選択者の人から).AsNoTracking()。ToList() – Mitch

関連する問題