为了模拟延迟加载,我想要一个方法,通过急切加载递归地包含完整的对象图,以便在加载实体时,也加载其所有相关数据。
从 MSDN 文档:
- 要包含单个引用:query.Include(e => e.Level1Reference)。
- 要包含单个集合:query.Include(e => e.Level1Collection)。
- 要包含一个参考,然后是一个参考向下一级:query.Include(e => e.Level1Reference.Level2Reference)。
- 要包含一个引用,然后包含一个向下一级的集合:query.Include(e => e.Level1Reference.Level2Collection)。
- 要包含一个集合,然后包含一个参考,请执行以下操作:query.Include(e => e.Level1Collection.Select(l1 => l1.Level2Reference))。
- 要包含一个集合,然后包含一个向下一级的集合:query.Include(e => e.Level1Collection.Select(l1 => l1.Level2Collection))。
- 要包含一个集合,然后包含一个参考,请执行以下操作:query.Include(e => e.Level1Collection.Select(l1 => l1.Level2Reference))。
- 要包含一个集合,然后包含一个向下一级的集合:query.Include(e => e.Level1Collection.Select(l1 => l1.Level2Collection))。
- 要包含一个集合、一个引用和一个向下两个级别的引用:query.Include(e => e.Level1Collection.Select(l1 => l1.Level2Reference.Level3Reference))。
- 要包含一个集合、一个集合和一个参考向下两个级别:query.Include(e => e.Level1Collection.Select(l1 => l1.Level2Collection.Select(l2 => l2.Level3Reference)))。
问题:
如何递归地包含所有可导航属性并将其构建到通用存储库方法中,以便我可以在需要时获得实体的深层对象图,无论是否添加了新属性?