渴望加载实体树

时间:2014-01-01 20:01:31

标签: c# .net entity-framework eager-loading

我知道如何eager load multiple levels of entities with an include statement。但是如果我正在装树呢?考虑这种实体层次结构:

  • 阿尔法
    • Bravo //集合
      • 查理//集合
      • Delta //集合

现在假设我要加载添加了所有Bravo,Charlie和Delta实体的Alpha实体。这可以用一个Include语句来完成吗?我怀疑答案是否定的,但我想确定。

否则,我怀疑我只会使用两个Include语句。但即使这样也让我停下来,因为这意味着我必须两次引用Bravo(每Include一次)并且我不知道是否会混淆EF。

2 个答案:

答案 0 :(得分:2)

不,使用一个Include就无法完成。

您可以像这样链接包含:

var entities = context.Alphas.Include("Bravos").Include("Bravos.Charlies").Include("Bravos.Deltas");

答案 1 :(得分:2)

可以使用两个包括这样做:

var entities = context.Alphas.Include("Bravos.Charlies")
                             .Include("Bravos.Deltas");

或者这个:

var entities = context.Alphas.Include(a => a.Bravos.Select(b => b.Charlies))
                             .Include(a => a.Bravos.Select(b => b.Deltas));

显然,首先是更优雅。