EF LINQ包含嵌套实体

时间:2018-01-04 13:17:19

标签: c# .net database entity-framework linq

我有多层次的实体,具有以下层次结构: 父 - > RootChildren - >儿童 - >儿童 - > .....

Class Parent 
{
   public int Id {get; set;}
   public virtual Child RootChildren {get; set;}
}    
Class Child
{
   public virtual List<Child> Children {get; set;}
}

现在,我希望将包含所有子项的实体包含为嵌套方式。

我尝试了以下但是没有用:

var parents = dbContext.Parent 
                    .Where(p => p.Id == id)
                    .Select(r => r.RootChildren)
                    .Include(c => c.Children)
                    .ToList();

它为第一个孩子提供了结果,但不包括树中存在的所有嵌套子项。

任何建议或信息都将受到高度赞赏。谢谢!

1 个答案:

答案 0 :(得分:1)

您不应该尝试在Include之后应用Select并执行Include层次结构;

var parents = dbContext.Parent
    .Where(p => p.Id == id)
    .Include(c => c.RootChildren.Children)
    .Select(r => r.RootChildren)
    .ToList();