2

LINQ と Entity Framework は初めてです。以下を使用して、データベースからコレクションを取得しています。

var Publications = from pubs in db.RecurringPublications
                   select pubs;

Publications テーブルは、外部キーを介して他のテーブルにリンクされています。これを使用して、次のようなプロパティを参照しています。

Publications.Single().LinkedTable.LinkedTableColumn

時にはチェーンのさらに下に:

Publications.Single().LinkedTable.LinkedTable.LinkedLinkedTableColumn

遅延読み込みまたは熱心な読み込みを指定できることは知っていますが、デフォルトでどのように処理されるのか疑問に思っていました。デフォルトで最大深度はありますか? コンパイル時に使用する結合の数を把握していますか?

4

1 に答える 1

5

その特定のテーブルにあるものだけを熱心にロードします。

var Publications = from pubs in db.RecurringPublications
                   select pubs;

RecurringPublications テーブルからのみデータを取得します。追加のプロパティをロードするかどうかを指定できますが、何も指定しない場合は、必要なものだけが提供されます。それ以上のことはありません。

Publications.Single().LinkedTable.LinkedTableColumn

LinkedTableColumn を遅延読み込みします。戻り値が Queryable である場合 (これまでのところ)、結合を実行して単一の SQL クエリを返します。

ただし、呼び出しが既に列挙されている場合は、2 番目の呼び出しが行われます。

詳細については、MSDN へのブログ投稿

于 2013-02-27T19:21:35.167 に答える