Entity Framework 6を使用してデータベースアプリケーションを開発しています.1つの場所では、ユーザー入力に基づいてクエリをアセンブルし、 。私は自分でクエリを実行して、結果セットを返すことはできません。これは、呼び出し元がUIをリフレッシュした後に再度実行するためにクエリを保存する必要があるためです。また、組み立てられたクエリを表すIQueryable
を返すことはできません。これは、それが組み立てられたコンテキストに対してのみ有効であるためです。Entity Framework 6を使用してクエリを「事前構築する」方法
私はCompiledQuery.Compile
を使用してみましたが、これはEntity Framework 6のDbContext
ベースクラスでは機能しません。そのようなことをする必要があります。プリコンパイル/プリアセンブル/プレコンストラクション返され、後で再度実行されますが、Entity Framework 6で動作します。デリゲートなどの形式でクエリが返されるかどうかは関係ありません。特定のコンテキストインスタンスとは関係なくクエリを表すものが必要です。
異なるコンテキストインスタンスに対して複数回実行できるように、Entity Framework 6でクエリを事前に作成して返すにはどうすればよいですか?
過去のEF4をプリコンパイルすると、クエリを1回実行してから動作し、その後、クエリが計算され、キャッシュされます。コンテキストに依存しないソリューションがあるとは思わない - あなたのコンテキストにはクエリの計算を可能にするマッピング情報が含まれている。 – DevilSuichiro
**すべての**クエリは、アプリケーションドメインごとにEntity-Frameworkによってキャッシュされます。あなたが持っているdbcontext、いくつの...などは問題ではありません。エンジンがアプリケーションドメインを終了しないと判断するか、アプリケーションドメインが終了するまでキャッシュされても問題ありません。 –
私は具体的にクエリをキャッシュするつもりはありません。実際には、クエリを作成して関数から返す方法を探していて、後で指定されたコンテキストに対してクエリを実行します。 –