【发布时间】:2020-06-16 14:27:33
【问题描述】:
实体框架 ThenInclude 不包括孙子的任何属性。当我尝试访问“GrandChild”的属性“Total”时,我收到错误消息“CS1061 'ICollection' 不包含'Total' 的定义并且没有可访问的扩展方法'Total'”。 intellosense 根本不适用于“GrandChild”。它适用于“Child”,但不适用于“GrandChild”。当我从 Postman 发出请求时,我可以看到 Entity 包含“GrandChild”并且它肯定具有“Total”属性(以及所有其他属性)。
var products = dbf.Products
.Include(a=>a.Child)
.ThenInclude(b => b.GrandChild)
.Where(c => c.ProId >72200);
foreach(var p in products)
{
p.Child.GrandChild.Total// I get error here
}
【问题讨论】:
-
ICollection没有属性Total它有属性Count。 -
GrandChild是该属性的一个坏名称,它应该类似于GrandChildren,这应该让您更好地了解出了什么问题。相反,您需要遍历该集合,或执行Child.GrandChild.First().Total之类的操作 -
感谢您提供宝贵的信息。但问题是我如何才能使用 ThenInclude 访问该属性(如果 ThenInclude 不允许访问属性,它的目的是什么?
-
你不能。 ThenInclude 不负责访问该属性。它确保加载了 GrandChild(再次,非常糟糕的 oclection 命名),您需要在代码中迭代子项。
标签: .net entity-framework-core