2

ASP.NET Web アプリケーションをプロファイリングしていますが、EF4 実行計画がキャッシュされていないことに気付きました。以下のスクリーンショットに示すように、ページが読み込まれるたびに、すべての Linq 式が再コンパイルされます。

ドットトレース

これらの実行プランをキャッシュするように EF4 に指示する方法はありますか?

編集:

これは私のクエリがどのように見えるかです:

var objs = db.Table
    .Include("OtherTable")
    .Where(g =>
        (someId != null || g.ID == someId) &&
        (g.ObjType == someType) &&
        (/* etc */))
    .ToList();
4

1 に答える 1

2

Query Plan Cachingを見てください。クエリが非効率的に作成された場合、キャッシュされない可能性があります。

また、各実行プランはアプリケーション ドメインごとにキャッシュされます。したがって、ASP.Net では、これは AppPool と同じであり、AppPool をシャットダウンまたは再起動すると、キャッシュがクリアされます。

于 2013-01-02T19:57:38.117 に答える