EFCore 2.0-Include&ThenInclude:子集合-孙子集合

时间:2018-07-26 20:54:46

标签: c# entity-framework-core

对于下面的模型

public class Parent
{
    public int Id { get; set; }

    public List<Child> Children { get; set; }
}

public class Child
{
    public int ChildId { get; set; }

    public int ParentId { get; set; }

    public List<Child> GrandChildren { get; set; }
}

public class GrandChild
{
    public int GrandChildId { get; set; }

    public int ChildId { get; set; }
}

我该如何编写一个在Include / ThenInclude语句中获取所有Children和GrandChildren的查询?

var record = GetAll()
 .Where(r => r.Id == 4)
 .Include(r => r.Children)
     .ThenInclude(????????????)

在“ ThenInclude”语句中,我不能使用select语句来获取孙子代。取得GrandChildren系列的正确方法是什么?

非常感谢。

1 个答案:

答案 0 :(得分:2)

只需类型导航属性名称:

.ThenInclude(c => c.GrandChildren)

这是EF Core文档的Including multiple levels 部分中特别提到的当前Intellisense问题:

  

注意

     

当前版本的Visual Studio提供了不正确的代码完成选项,并且在集合导航属性之后使用ThenInclude方法时,可能导致正确的表达式被标记为语法错误。这是在https://github.com/dotnet/roslyn/issues/8237处跟踪的IntelliSense错误的症状。只要代码正确且可以成功编译,就可以忽略这些虚假的语法错误。