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

Gau*_*dar 3 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; }
}
Run Code Online (Sandbox Code Playgroud)

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

var record = GetAll()
 .Where(r => r.Id == 4)
 .Include(r => r.Children)
     .ThenInclude(????????????)
Run Code Online (Sandbox Code Playgroud)

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

非常感激。

Iva*_*oev 6

只需输入导航属性名称:

.ThenInclude(c => c.GrandChildren)
Run Code Online (Sandbox Code Playgroud)

这是当前的Intellisense问题,在EF Core文档的“ 包括多个级别” 部分中特别提到:

注意

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