中規模のプロジェクトでLINQto SQLの使用を開始したばかりであり、L2Sが提供する利点についての理解を深めたいと思います。
私が見ている欠点の1つは、コードの別のレイヤーが追加されることです。私の理解では、ストアドプロシージャやADO.Netを使用するよりもパフォーマンスが遅くなります。また、特により複雑なクエリの場合、デバッグが課題になる可能性があり、いずれにせよこれらがストアドプロシージャに移動される可能性があるようです。
より良い開発環境でクエリを作成する方法を常に望んでいましたが、L2Sクエリは私が探していたソリューションですか?または、SQLの上に別のレイヤーを作成したばかりで、2倍の心配がありますか?
L2Sが提供する利点:
パフォーマンスに関して:
デバッグに関して:
別のレイヤーについて:
ほんの少しの簡単な考え。
一般的にLINQ
LINQ to SQL(または他のデータベースLINQ)
これは決して万能薬ではありませんが、SQLクエリを直接作成するか、ストアドプロシージャを使用するよりも、非常に好んで使用しています。
更新と同様に、LINQ toSQLの将来に関するリンクを次に示します。
MicrosoftはLINQ to SQLのサポート終了に対するスタンスを確認しましたか?
最後のリンクのコメントが述べているように、LINQ to SQLはなくなることはなく、少なくともMicrosoftによって「改善」されただけではありません。これらのコメントや投稿は、開発計画に注意してください。
私は彼らがあなたが探していたものであると言わなければなりません。慣れるまでには少し時間がかかりますが、一度慣れると(少なくとも私にとっては)戻ることは考えられません。 linqとストアドプロシージャに関しては、ビルドを間違えるとパフォーマンスが低下する可能性があります。ひどくコーディングされたクライアントのいくつかのストアドプロシージャをSQLに変換するためにlinqに移動したため、時間が20秒(Webアプリではまったく受け入れられない)から1秒未満に短縮されました。そして、ストアドプロシージャソリューションよりもはるかに少ないコードです。
更新1:また、取得するものの列を制限でき、実際にはそれのみを取得するため、多くの柔軟性が得られます。ストアドプロシージャソリューションでは、基になるクエリが同じであっても、取得する列セットごとにプロシージャを定義する必要があります。
最近、EntityFramework環境ではLINQ2Entityに切り替えました。以前は、基本的なSQLアダプターがありました。使用しているデータベースはかなり小さいため、LINQのパフォーマンスについてコメントすることはできません。
ただし、クエリの記述がはるかに簡単になり、エンティティを追加することで強い型付けが可能になることを認めなければなりません。