プロジェクトでLINQを学習しようとしています。しかし、私はIncludeメソッドに少し混乱しています。それは何のために使われますか?アルバム変数の次の2つの初期化の違いは何ですか?
var album = storeDB.Albums.Include("Artist").ToList();
var album = storeDB.Albums.ToList();
プロジェクトでLINQを学習しようとしています。しかし、私はIncludeメソッドに少し混乱しています。それは何のために使われますか?アルバム変数の次の2つの初期化の違いは何ですか?
var album = storeDB.Albums.Include("Artist").ToList();
var album = storeDB.Albums.ToList();
Includeは、エンティティの積極的な読み込みを有効にするためにEFによって使用される拡張メソッドです。
最初のケースでは、を指定することにより、セットからエンティティInclude("Artist")
を取得するときに、関連付けられたエンティティも取得するように指示します(通常、関連付けはデータベース内の外部キーを介して行われますが、モデルでも関連付けることができます)。Album
Albums
LINQ
Artist
2番目のケースでは、アルバムがフェッチされるときに、関連するエンティティをプルスルーしていません。
Entity Framework 4.1以降では、ラムダを受け取るIncludeを使用するための推奨メカニズムがあるため、文字列の関連付けは強く型付けされることに注意してください。
var album = storeDB.Albums.Include(alb => alb.Artist).ToList();
System.Data.Entity
ラムダ拡張機能を使用する場合は、インポートすることを忘れないでください。
2つのステートメントは異なる目的で使用されます。最初のステートメントは、Eager読み込みを使用することです。つまり、エンティティに属するすべてのオブジェクトを一度に読み込みます(後で別のクエリを作成する代わりに)。
2つ目は結果を提供するため、Linqでより一般的なタイプであるIQueryableオブジェクトの代わりに、無数のイテレーターで結果を保持できます。