首页 > 解决方案 > Include 和 ThenInclude 与多级集合

问题描述

我正在尝试查询具有多个集合级别的实体,以及单个级别的多个集合。我正在使用Include()and ThenInclude(),但没有太大成功。我发现的示例在同一级别上没有多个集合,并且我没有任何运气将该技术应用于我的用例。

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

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)

但是,这错过了Categories[].Recommendations[]收藏。Recommendations[]这是因为在同一级别(和Subcategories[])有两个集合。

关于构建此查询的方法的任何建议,以便我可以获得所需的结果?

谢谢。

标签: entity-framework-coreentity-framework-core-2.1

解决方案


您必须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)

推荐阅读