对于下面的模型
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系列的正确方法是什么?
非常感谢。
答案 0 :(得分:2)
只需类型导航属性名称:
.ThenInclude(c => c.GrandChildren)
这是EF Core文档的Including multiple levels 部分中特别提到的当前Intellisense问题:
注意
当前版本的Visual Studio提供了不正确的代码完成选项,并且在集合导航属性之后使用
ThenInclude
方法时,可能导致正确的表达式被标记为语法错误。这是在https://github.com/dotnet/roslyn/issues/8237处跟踪的IntelliSense错误的症状。只要代码正确且可以成功编译,就可以忽略这些虚假的语法错误。