1

SQL Server でストアド プロシージャをコンパイルしてキャッシュするのと同じように、効率が向上するため、Entity Framework でコンパイル済みクエリを使用する必要があると何度か言及されているのを見てきました。

どうやら、コンパイルされたクエリには 2 つのバージョンがあり、最初はCompiledQueryであり、私の理解では、 と の両方で機能する自動コンパイルされたクエリでのみ機能しObjectContextます。DbContextObjectContext

では、どのバージョンの EF でコンパイルされたクエリが機能し、どの API コンテキストで動作するのでしょうか?

4

1 に答える 1

5

.NET 4.5 は、自動コンパイルとキャッシュをサポートする最初のバージョンです。コンパイルされたクエリのドキュメントから:

.NET Framework 4.5 以降、LINQ クエリは自動的にキャッシュされます。ただし、コンパイル済みの LINQ クエリを使用して、後の実行でこのコストを削減できます。また、コンパイル済みのクエリは、自動的にキャッシュされる LINQ クエリよりも効率的です。Enumerable.Contains 演算子をインメモリ コレクションに適用する LINQ to Entities クエリは、自動的にキャッシュされないことに注意してください。また、コンパイル済みの LINQ クエリでメモリ内コレクションをパラメーター化することもできません。

手動でコンパイルされたクエリのCompiledQueryサポートは、.NET 3.5 sp1 以降に存在します。

于 2013-08-16T20:02:09.097 に答える