Entity framework core 包含,然后包含多个级别的集合

Entity framework core 包含,然后包含多个级别的集合,entity-framework-core,entity-framework-core-2.1,Entity Framework Core,Entity Framework Core 2.1,我正在尝试查询具有多个集合级别的实体,以及在单个级别上具有多个集合的实体。我正在使用Include,然后使用Include,但没有太大的成功。我发现的示例没有在同一级别上有多个集合,我也没有将该技术应用到我的用例中 这是我的实体的简化说明。具有[]的是集合: Home Areas[] Area Name Categories[] Name Recommendations[]

我正在尝试查询具有多个集合级别的实体,以及在单个级别上具有多个集合的实体。我正在使用Include,然后使用Include,但没有太大的成功。我发现的示例没有在同一级别上有多个集合,我也没有将该技术应用到我的用例中

这是我的实体的简化说明。具有[]的是集合:

Home
   Areas[]
       Area
           Name
           Categories[]
               Name
               Recommendations[]
               Subcategories[]
                   Name
                   Recommendations[]
       Area
           Name
           Categories[]
               Name
               Recommendations[]
               Subcategories[]
                   Name
                   Recommendations[]   
我已经走了这么远:

result = Home
    .Include(x => x.Areas)
    .ThenInclude(a => a.Categories)
    .ThenInclude(c => c.Subcategories)
    .ThenInclude(s => s.Recommendations)
但是,这会遗漏类别[]。建议[]集合。这是因为在同一级别上有两个集合-建议[]和子类别[]

对于如何构造此查询以便获得所需结果,是否有任何建议

谢谢。

您必须为每个级别调用Include:

result = Home
    .Include(x => x.Areas)
        .ThenInclude(a => a.Categories)
        .ThenInclude(c => c.Subcategories)
        .ThenInclude(s => s.Recommendations)
    .Include(x => x.Areas)
        .ThenInclude(a => a.Recommendations)

您必须按如下方式编写查询:

result = Home
    .Include(x => x.Areas)
        .ThenInclude(a => a.Categories)
        .ThenInclude(s => s.Recommendations)
   .Include(x => x.Areas)
       .ThenInclude(c => c.Subcategories)