EF Core Collection Load .. of Collection

时间:2017-01-08 03:12:39

标签: c# entity-framework-core navigation-properties

使用EF Core 1.1.0

我有一个模型,其集合本身就有集合。

public class A {  
  public string Ay {get;set;}    
  public List<B> Bees {get;set;}
}

public class B {
  public string Be {get;set;}
  public List<C> Seas {get;set;}
}

public class C {
  public string See {get;set;}
  public bool InDark {get;set;}
  public List<D> Sigh {get;set;}
}

现在...... A很大,99%的时间我不关心B,所以它不会被加载。如果我加载了它,那就像是:

context.A.Include(a=>a.Bees).ThenInclude(b=>b.Seas).ThenInclude(c=>c.Sigh)...

现在让我们说已经装满了,1%的情况让我关心B.我们还没有延迟加载,但最后一次发布确实给了我们明确的装载。真棒。

context.Entry(A).Collection(a=>a.Bees).Load();

问题似乎是没有办法在B中包含额外的集合?除了用.Include.ThenInclude.ThenInclude.Etc重新加载A,我别无选择吗?

1 个答案:

答案 0 :(得分:10)

幸运的是你有一个选择。您可以使用Load方法,并根据需要应用尽可能多的Query / Include,而不是直接调用ThenInclude

对于您的样本,它将是这样的:

context.Entry(A).Collection(a => a.Bees)
    .Query()
    .Include(b => b.Seas).ThenInclude(c => c.Sigh)...
    .Load();