EF Core Collection 加载 .. 集合

2024-01-11

使用 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)...

现在假设我已经加载了A而这 1% 恰好是我关心 B 的地方。我们还没有延迟加载,但上一个版本确实给了我们显式加载。惊人的。

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

问题似乎是没有办法将附加集合包含在 B 中?我别无选择,只能用 .Include.ThenInclude.ThenInclude.Etc 重新加载 A 吗?


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

对于您的示例,它将是这样的:

context.Entry(A).Collection(a => a.Bees)
    .Query()
    .Include(b => b.Seas).ThenInclude(c => c.Sigh)...
    .Load();
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

EF Core Collection 加载 .. 集合 的相关文章

随机推荐