次のような状況があります。最近発生した負荷の問題を最適化するために、いくつかの一時テーブルを作成する必要があります。LINQ to SQLは、DBMLにマップされていない限り、一時テーブルではうまく機能しないようです。正直なところ、LINQtoSQLでスコープがどのように機能するかはまだわかりません。それを念頭に置いて、DBML上のすべての一時テーブルを定義しました。
しかし、いつものように、物事はそれほど簡単ではありません。ユーザーがシステムにログオンしたときに定義されるため、コンパイル時に(linqが必要とする)一時テーブルの名前を定義できません。さらに追加するには、これらの動的一時テーブルをいくつか使用するため、すべてをDBMLにマップする方法はありません。
を介して一時テーブルを作成しようとしたときexecuteCommand
、その結果を選択して強い型()にキャストしますTempTableDefinition
。ただし、この新しく作成された一時テーブルに値を挿入しようとすると、「無効なオブジェクト名#NewTempTable」というSQLExceptionが発生しました(これは、テーブルの作成に使用した名前と同じです)。
すべての一時テーブルを作成し、そのプロパティを強い型付きオブジェクトにマップするには、純粋な古いプレーンADO.NETを使用する必要があるようです(このアプローチをお勧めします)。ADO.NETとLINQを混在させたくないのは、それが悪いアイデアだと読んだだけだからです。さらに、私はADO.NETの方法よりも強い型のオブジェクトのlinqアプローチを好みます。
履歴書: では、linq to sqlが機能する動的な一時テーブルを作成することは可能ですか?コンパイル時に名前を定義することはできず、実行時にのみ定義できます。ヒントをいただければ幸いです。