linq to sql は関連付けられたエンティティを自動的に遅延読み込みしますか?
と思いますが、そのように書かれている記事が見つかりません。
linq to sql は関連付けられたエンティティを自動的に遅延読み込みしますか?
と思いますが、そのように書かれている記事が見つかりません。
「遅延ロード」をどのように定義するかによって異なります。
あなたが言うなら
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 は自動的に結合を行い、単一のデータベース クエリで両方のレコードから情報を読み込みます。
はい、遅延読み込みはデフォルトで有効になっています。この記事をチェックしてください。
はい、そう思います。また、ショットガン アプローチで複数のものをバッチ ロードできる "load with" 機能/セマンティックもあります。これは、1 つの Web ページをレンダリングするために必要なすべてのデータを事前にキャッシュするなど、すぐにメイン エンティティと共に関連データが必要になることがわかっている場合に便利です。