質問: 私たちはC#に移行している従来のアプリケーションを持っており、データアクセスにはEntity Framework(EF)を使用したいと考えています。 SQL Server 2012はデータベースであり、現在はEF 5.0を使用しています。元のアプリケーションは、大量のデータを処理していました。この処理の一環として、元のアプリケーションでは、「テンポ」テーブルを**幅広く**使用していました。これらのテーブルのほとんどは、実際にSQL Serverのtempテーブル(tempdbの#sometableなど)ではなく、SQL Serverの独自のデータベースで作成され、破棄された実際のテーブルでした。 今、私はC#EFで作業しています。データ処理の一環として一時テーブル(いずれかのタイプ)を使用できるようにしたいと考えています。私はEFで一時テーブルを使用していくつかの検索を行っている - と今まで私はあなたがSQLBulkCopyを使用してtempdbの一時テーブルを作成することができますが、EFのLinqを使用してクエリする方法はありません通常のデータ構造。私が読んだもう1つのオプションは、ストアドプロシージャを使用して処理を行い、テーブル値のパラメータを渡します。これにより、何千ものストアドプロシージャが強制され、多くのビジネスロジックがsprocsに格納されます。 一時的なSQL Serverテーブルを作成して使用する他の方法はありますか? EF 6にはこの領域に追加機能がありますか?
回答: EFで使用される一時テーブルは見たことがありません。 問題のデータプロセスがそれほど激しい場合は、ストアドプロシージャとして残すほうが良いでしょう(これは、従来のコードがどのように動作したかを仮定しています)。 EFは問題なくストアドプロシージャを実行できます。モデルエンティティとして結果を戻すことさえできます。 実際にストアドプロシージャを使用したくない場合は、通常のテーブルを使用して現在のセッションにフィルタリングするだけで、EF内の一時テーブルをシミュレートすることもできます(GUIDなどのスローアウェイシンセシスキー)。この手法はかなりうまくいきますが、手続きが完了したらテーブルからガベージデータを消去する必要があるという欠点があります。