2009-08-14 5 views
1

既存のストアドプロシージャをLINQ-SQLプリコンパイル済みの動的SQLに変換する必要がありました。誰もがこれを行うための最善の方法を知っていますか?SPROCSからLINQ-to-SQLプリコンパイルされた動的SQLへの移行?

私はパフォーマンスの向上が得られると信じていますが、SPROCと同じではありませんが、それと似ています。また、LINQからSQLへのプリコンパイルされた動的SQLでは、強く型付けされたフィールドなどが得られます。これらの仮定は正しいですか?

また、おそらく利用できませんが、自動的に私のストアドプロシージャをLINQ-to-SQLに変換する方法がありますか?

答えて

0

いいえ、私はあなたの前提に同意しません。

1 /ストアドプロシージャは、少なくともLINQ-to-SQLよりも優れたパフォーマンスを示します。 LINQ-to-SQLに移動するとパフォーマンスは向上しません

2 /既存のストアドプロシージャを使用して強く型付けされたフィールドを取得できます。私はあなたがDataSet(メモリから)を使用してこれを取得すると信じていますが、LINQ-to-SQLクラスを作成してデザイナに単にストアドプロシージャをドラッグすると、それを得ることができます。コードジェネレータは、ストアドプロシージャごとに厳密に型指定され、正しく名前が付けられたReturnObjectsを作成します。

既存のストアドプロクセスをお持ちの場合は、LINQに変換することはありません。

+0

ありがとう、同意しました、ありがとうございました –

+0

1は変数where句を持つ複雑なストアドプロシージャには当てはまりません。 – JohnOpincar

+0

@ JohnOpincar私は、対応するLINQ-to-SQLより悪い性能を持つストアドプロシージャを見ることに興味があります。例はありますか? –

2

ストアドプロシージャの数に応じて、すべてのストアドプロシージャをLINQからSQLに変換することは大きな仕事になります。私が示唆していることは、ここで行ったことですが、ストアドプロシージャの代わりにLINQでSQLに移行するように日付を設定することです。このようにして、すべての新機能はLINQ to SQLを使用し、古い機能に戻ってその時点でLINQ to SQLに変換するよりも新しい機能を追加するとします。

ストアドプロシージャをLINQ to SQLにインポートし、それらを関数のように使用することもできます。これにアプローチする最善の方法は、一度に1つの機能をゆっくりと移動することで、最終的にはすべてが変換されます。

パフォーマンスの向上については、すぐに大きな利益を得ることはできません。ストアドプロシージャの最適化の程度に依存しますか? LINQ to SQLは、非常に効率的なSQLコードを生成しますが、すべての場合ではありません。また、必要なパフォーマンスを得るためにSQLを書く必要があることもあります。私が働いている開発者の多くは、ストアドプロシージャに非常に効率的なSQLコードを書いていないことが分かりました。時には時間の制約があったのは、彼らがそれ以上良く分からなかったためだった。このような場合、LINQ to SQLはパフォーマンスが向上する傾向にありました。なぜなら、SQLの生成は、開発者が自己作成できるものよりもはるかに最適化されていたからです。私が見つけたもう一つの興味深い点は、LINQ to SQLは、LINQよりもはるかに効率的なSQLをエンティティに書く傾向があるということです。

最後に、ストアドプロシージャをLINQからSQLに変換するツールは認識していませんが、実際の変換はそれほど難しくありません.LINQはSQLと非常によく似ています。

これが役に立ちます。

関連する問題