使用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,我别无选择吗?
答案 0 :(得分:10)
幸运的是你有一个选择。您可以使用Load
方法,并根据需要应用尽可能多的Query
/ Include
,而不是直接调用ThenInclude
。
对于您的样本,它将是这样的:
context.Entry(A).Collection(a => a.Bees)
.Query()
.Include(b => b.Seas).ThenInclude(c => c.Sigh)...
.Load();