Linq To SQL または Entity フレームワークはどちらも、SQL Server 2005 とうまく統合されています。
SQL Server 2008 のスペック シートでは、さらに優れた統合が約束されていますが、私にはわかりません。
2008 サーバーと通信するときに Linq に関して実行でき、SQL Server 2005 と通信するときに実行できないことの例は何ですか?
Linq To SQL または Entity フレームワークはどちらも、SQL Server 2005 とうまく統合されています。
SQL Server 2008 のスペック シートでは、さらに優れた統合が約束されていますが、私にはわかりません。
2008 サーバーと通信するときに Linq に関して実行でき、SQL Server 2005 と通信するときに実行できないことの例は何ですか?
SQL 2005 が誤って解釈する結合セットのページングの問題があります。
var orders = (
from c in Customers
from o in c.Orders
select new {c, o}
).Skip(10).Take(10).ToList();
LINQ は、結合されたセットに対して ROW_Number を生成します。SQL2005 は、そのコードから不適切な計画を生成します。ここにディスカッションへのリンクがあります。
編集#2:SQL2008がこの問題を解決することを知らないことを明確にしたいと思います。私はただ希望を持っています。
このマーケティング リンクの主張
「LINQ to SQL を使用して、Microsoft SQL Server データベースに対してデータ アクセス コードを直接記述します。」
これは基本的に真実ではありません。
Linq To SQL は、SQL に変換された式ツリーに変換されたクエリ理解であり、クエリ オプティマイザーによって最適化され、SQL Server データベースに対して実行されます。「直接」フェ。
新しいデータ型を完全にサポートしています。笑。それを超えて、最適化されたクエリ(mergeコマンドなど)の可能性を除いて、あなたは私を手に入れました。
とにかく、そのほとんどはサーバー上で行わなければならないと思います。彼らはおそらく、新しいタイプを除いて私が知らない違いに関して、クエリの実行を最適化しました。
LINQ が新しい MERGE ステートメントを公開しない限り、いいえ。
特に ORM/クライアントの観点からは、エンジンに実質的な違いはほとんどありません