遅延読み込みをエミュレートするには、Eager Loading を介して完全なオブジェクト グラフを再帰的にインクルードし、エンティティの読み込み時に関連データもすべて読み込まれるようにするメソッドが必要です。
MSDN ドキュメントから:
- 単一の参照を含めるには: query.Include(e => e.Level1Reference)。
- 単一のコレクションを含める場合: query.Include(e => e.Level1Collection)。
- 参照を含めてから、1 レベル下の参照を含めるには: query.Include(e => e.Level1Reference.Level2Reference)。
- 参照を含めてから 1 レベル下のコレクションを含めるには: query.Include(e => e.Level1Reference.Level2Collection)。
- コレクションを含めてから、1 レベル下の参照を含めるには: query.Include(e => e.Level1Collection.Select(l1 => l1.Level2Reference))。
- コレクションを含めてから 1 レベル下のコレクションを含めるには、次のようにします。 query.Include(e => e.Level1Collection.Select(l1 => l1.Level2Collection))
- コレクションを含めてから、1 レベル下の参照を含めるには: query.Include(e => e.Level1Collection.Select(l1 => l1.Level2Reference))。
- コレクションを含めてから 1 レベル下のコレクションを含めるには、次のようにします。 query.Include(e => e.Level1Collection.Select(l1 => l1.Level2Collection))
- コレクション、参照、および参照を 2 レベル下に含めるには: query.Include(e => e.Level1Collection.Select(l1 => l1.Level2Reference.Level3Reference))。
- コレクション、コレクション、および 2 レベル下の参照を含めるには: query.Include(e => e.Level1Collection.Select(l1 => l1.Level2Collection.Select(l2 => l2.Level3Reference)))。
質問:
新しいプロパティが追加されたかどうかに関係なく、必要なときにいつでもエンティティの深いオブジェクト グラフを取得できるように、ナビゲート可能なすべてのプロパティを再帰的に含めて、これを汎用リポジトリ メソッドに組み込むにはどうすればよいですか?