プロLINQの議論は、データベース開発の歴史を持たない人々(一般)から来ているように思われます。
特にVS DB ProやTeam Suiteなどの製品を使用している場合、ここで行われた引数の多くは適用されません。たとえば、次のようになります。
保守とテストが難しい:VSは、完全な構文チェック、スタイルチェック、参照チェックと制約チェックなどを提供します。また、完全な単体テスト機能とリファクタリングツールも提供します。
LINQは、ACIDテストに失敗するため(私の考えでは)、真のユニットテストを不可能にします。
LINQでのデバッグが容易に:なぜですか?VSでは、マネージコードからの完全なステップインと、SPの定期的なデバッグが可能です。
展開スクリプトではなく、単一のDLLにコンパイルされます。VSは、完全なデータベースを構築して展開したり、データセーフな増分変更を行ったりすることができるので、助けになります。
LINQでTSQLを学ぶ必要はありません:いいえ、必要ありませんが、LINQを学ぶ必要があります-利点はどこにありますか?
私はこれが利益になるとは本当に思っていません。分離して何かを変更できることは理論的には良さそうに聞こえるかもしれませんが、変更が契約を履行するからといって、それが正しい結果を返すわけではありません。正しい結果を判断するには、コンテキストが必要であり、そのコンテキストを呼び出しコードから取得します。
疎結合のアプリは、柔軟性を向上させる優れたプログラマーの究極の目標です。物事を個別に変更できることは素晴らしいことであり、適切な結果が返されることを保証するのはユニットテストです。
皆さんが動揺する前に、LINQにはその地位があり、大きな未来があると思います。しかし、複雑でデータ集約型のアプリケーションの場合、ストアドプロシージャに代わる準備ができているとは思いません。これは、今年のTechEdのMVPによって私が反響を呼んだ見解でした(これらは無名のままです)。
編集:物事のLINQ to SQLストアドプロシージャ側は、私がまだもっと読む必要があるものです-私が見つけたものに応じて、上記のダイアトリブを変更するかもしれません;)