6

linq to sql は関連付けられたエンティティを自動的に遅延読み込みしますか?

と思いますが、そのように書かれている記事が見つかりません。

4

3 に答える 3

12

「遅延ロード」をどのように定義するかによって異なります。

あなたが言うなら

var person = (from p in db.People 
              where p.PersonId = pid 
              select p).First();
var spouse = person.Spouse;   // based on the SpouseId FK 
                              // back into the People table.

2番目のオブジェクトは参照されるまでデータベースから取得されないため、これはまさに「遅延読み込み」になります。ただし、これには 2 つのデータベース クエリが必要です。

ただし、あえて言うならば、

var family = (from p in db.People
              where p.PersonId = pid 
             select new 
              { 
                 Name = p.Name, 
                 SpouseName = p.Spouse.Name
              }).First();

次に、Linq は自動的に結合を行い、単一のデータベース クエリで両方のレコードから情報を読み込みます。

于 2009-02-17T17:41:56.517 に答える
3

はい、遅延読み込みはデフォルトで有効になっています。この記事をチェックしてください。

于 2009-02-17T17:32:49.363 に答える
3

はい、そう思います。また、ショットガン アプローチで複数のものをバッチ ロードできる "load with" 機能/セマンティックもあります。これは、1 つの Web ページをレンダリングするために必要なすべてのデータを事前にキャッシュするなど、すぐにメイン エンティティと共に関連データが必要になることがわかっている場合に便利です。

于 2009-02-17T17:25:51.610 に答える