LINQ to Dataset は LINQ to EF のサブセットですか、それともこれら 2 つは独立していますか?
3 に答える
それらは独立しています。
Linq to Dataset は、以前に ADO.NET を使用して作成された DataSet に対して機能します。データセットは linq を使用する前に読み込まれるため、SQL クエリは動的に構築されません。
Linq to EntityFramework は、エンティティ フレームワークのコンテキストに対して機能します。ここでは、指定した Linq クエリに基づいて、SQL クエリが動的に構築されます。
それらは独立しており、うまく連携することさえできません。
LINQ-to-Datatsets は、IEnumerable に基づいて、既に DataTable に読み込まれているデータに対して LINQ クエリを実行できる拡張メソッドのセットです。List<> やその他のコレクションのクエリに近いです。
LINQ-to-Entities は、クエリ プロバイダーと IQueryable を使用して、LINQ クエリを SQL クエリに変換します。また、データベース テーブルをオブジェクトとしてモデル化することもできます。
EF を使用すると、(はるかに多くの) オブジェクト指向を記述できます。DataSet の使用は、データベース指向のままです。
Linq は queryProviders の概念で動作します。クエリ プロバイダーは、ラムバ式を基になるデータ ストアのクエリに変換する役割を果たします。Obalix が私の前に言ったように、Linq to Entities クエリ プロバイダーは、ラムダを使用した linq を、基になる ado.net オブジェクトを使用して実行される実際の SQL に変換します。ここで正規関数を見てください、SQLに変換されます(そうでないことに注意してください)。一方、linq to dataset は DAtaSet インフラストラクチャに対して機能します。覚えているかもしれませんが、Data Set にはいくつかのクエリが関連付けられています。(ゲッター、更新、削除、挿入) DataAdapters オブジェクトの使用。Linq クエリは、データセット = テーブル、列などに既に存在するオブジェクトにマップされます。プロバイダーはそのような低レベルで動作しないため、SQL クエリは構築されません。データ セットは、使用するデータの抽象化です。
データベースにとらわれない場合は、SQL への linq を検討してください。私の意見が正しければ、Oracle への linq プロバイダーもあります。