EF Core Collection Load .. of Collection

imu*_*kai 7 c# navigation-properties entity-framework-core

使用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;}
}
Run Code Online (Sandbox Code Playgroud)

现在.. A是巨大的,99%的时间我不关心B,所以它不会被加载.如果我加载它,那将是这样的:

context.A.Include(a=>a.Bees).ThenInclude(b=>b.Seas).ThenInclude(c=>c.Sigh)...
Run Code Online (Sandbox Code Playgroud)

现在让我们说我已经加载了A并且1%恰好让我关心B.我们还没有延迟加载,但最后一个版本确实给了我们明确的加载.真棒.

context.Entry(A).Collection(a=>a.Bees).Load();
Run Code Online (Sandbox Code Playgroud)

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

Iva*_*oev 10

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

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

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