LINQからSQLへのアップデートとCompiledQuery.Compile()、削除、挿入?

StackOverflow https://stackoverflow.com/questions/354245

  •  21-08-2019
  •  | 
  •  

質問

すべて、

だから私は、LINQからSQLへのすべての私のselectクエリは、物事をスピードアップするためにCompiledQueriesを使用してに変換持っています。これまでのSELECT文のための素晴らしい作品が、私は文を挿入、更新をプリコンパイル、または削除する方法を見つけ出すことができませんでした。

あなたは、挿入、削除またはLINQ--SQLにして更新しているときに、確かに、あなたは、オブジェクトモデルを使用する必要があります。しかし、明らかにどこかがプリコンパイルおよび静的メンバに格納します。ためにいいだろうクエリを生成し、道に沿って

これは可能ですか?更新のためのようなLINQのパフォーマンスがどのようなものです、削除および挿入のプリコンパイルされていないとき?私は、彼らが下に行うことはずっと簡単かつ少ない「ダイナミック」であるので、それは、はるかに高速選択よりもされて見ることができました...

役に立ちましたか?

解決

は大きな違いがあります。 LINQのツーSQLのselectクエリは、大規模複雑な式の木することができます。そのこれらのことは、いつか「コンパイル」を取ることがあります。この場合、SQL Serverに対して実行することができますいくつかのT-SQLに合体。だから、それが再利用できるように、操作の結果をキャッシュすることは理にかなっています。

しかし、他の削除、更新、および挿入は、T-SQL(LINQ自体は、すべての照会についてです)に変換する式ツリーを必要としない簡単な操作です。その私たちは「クエリ」として、これらの他の操作を実行するSQLコードを考えるように訓練してきたことだけ残念な、我々はすべての情報を求めてactuallていない。

これらの操作はこれらの機能を実行するためのコードがすでにコンパイルされ、したがってないLINQによってのDataContextによって定義されます。

他のヒント

私が考える3のみ(キー... WHEREテーブルからDELETE)とUPDATEのみを変更したフィールドを更新し、そうごとに異なり、削除は自明シンプルであるため、コンパイルして再利用できるようにするには理にかなって挿入操作を更新します。

)amien

あなたはそれを最初に実行した後に、それは、ストアドプロシージャの実行プランのキャッシュになりますので、L2Sは「sp_executesqlを」を使用しています。 (同じクエリの - 同じではないのparams)以降の実行は、キャッシュからコンパイル済みの計画を再利用します。だから、何を求めていることは自動的に「舞台裏」SQL Serverによって処理されます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top