EF4 には現在、EF4 がすべてのクエリを生成している場合に、それを行うための組み込みの方法がありません。
ストアド プロシージャやより拡張されたインライン クエリ モデルを使用するなど、これを回避する方法がありますが、控えめに言っても時間がかかる可能性があります。
私は、キャッシングは EF4 サイトのサーバーの負荷を軽減するための Microsoft の意図したソリューションであると信じています (これについては Microsoft の代弁者ではありません)。フレームワークに組み込まれたコミットされていない (またはロックなし) 読み取りを行うと、2 つのコンテキストが同時に実行されたときに、EF4 の予想される動作に対して予測できない問題が発生します。それは、あなたの状況がそのレベルの並行性を必要とするという意味ではありません。
すべての選択でnolockを求められたようです。トランザクションである必要があるトランザクションがある場合、これは危険である可能性があるという以前のポスターには同意しますが、DBA を自動的にマペットにすることに同意しません。ダーティ リードに最適な CMS を実行しているだけかもしれません。データベース全体の ISOLATION LEVEL を変更すると、同じ効果が得られます。
DBA は、選択のみの操作に対して nolock を推奨している可能性があります (特に、ORM が誤って使用され、危険なデータ ダンプを実行している場合は問題ありません)。そのマペット コメントの最も面白い点は、スタック オーバーフロー自体が SQL サーバーを READ UNCOMMITTED モードで実行していることです。問題の答えを得るには、別の場所を見つける必要があると思いますか?
これをデータベース レベルで設定する可能性について DBA に相談するか、いくつかの場所でのみ必要な場合はキャッシュ戦略を検討してください。結局、Web はステートレスであるため、直接対処しない限り、同時実行性は幻想であることがよくあります。
分離レベルに関する情報