1. ホーム
  2. sql

[解決済み] LINQでInclude()は何をするのですか?

2022-03-12 02:27:46

質問

いろいろ調べてみたのですが、私はどちらかというとdb派なので、MSDNにある説明でも全く意味がわかりません。どなたか説明と例を示してください。 Include() 文は SQL クエリ?

解決方法は?

例えば、全顧客のリストを取得したい場合を考えてみましょう。

var customers = context.Customers.ToList();

そして、それぞれの Customer オブジェクトは、そのセットへの参照を持つ Orders であり、各 Order への参照があります。 LineItems を参照することもあります。 Product .

このように、多くの関連エンティティを持つトップレベルのオブジェクトを選択すると、多くのソースからデータを取り込む必要があるクエリになる可能性があります。 パフォーマンスの指標として Include() では、どの関連エンティティを同じクエリの一部としてデータベースから読み込むべきかを指定できます。

同じ例で言うと、関連する注文ヘッダはすべて取り込むが、その他のレコードは一切取り込まないということです。

var customersWithOrderDetail = context.Customers.Include("Orders").ToList();

SQLを求められたので最後のポイントとして、最初のステートメントで Include() は、シンプルなステートメントを生成することができました。

SELECT * FROM Customers;

を呼び出す最後のステートメントです。 Include("Orders") は次のようになります。

SELECT *
FROM Customers JOIN Orders ON Customers.Id = Orders.CustomerId;