EF 在集合中显式加载集合

FBr*_*t87 5 c# entity-framework

一个简单的问题,但从实体框架 MSDN 示例和其他搜索中,我看不到执行此操作的正确方法。

我可以像这样显式加载 EF 集合:

db.Entry(project).Collection(p => p.Reports).Load();
Run Code Online (Sandbox Code Playgroud)

但是,如果每个报告中都有一个需要加载的页面列表,我该怎么做?我认为它是这样的:

db.Entry(project.Reports).Collection(r => r.Pages).Load();
Run Code Online (Sandbox Code Playgroud)

但这行不通,因为 'r' 是 ICollection of Reports。在集合中加载集合的正确方法是什么?

Ger*_*old 6

您可以使用以下语法:

db.Entry(project).Collection(p => p.Reports)
  .Query()
  .Include(r => r.Pages).Load();
Run Code Online (Sandbox Code Playgroud)

根据 MSDN,查询...

返回将用于从数据库加载此集合的查询。返回的查询可以修改

...这意味着也Include可以应用于它。