实体框架然后包含不包括孙子的属性



Entity Framework ThenInclude 不包含孙子的任何属性。当我尝试访问"孙子"的属性"总计"时,出现错误"CS1061'ICollection'不包含'总计'的定义,也没有可访问的扩展方法'总计'"。智能感应根本不适用于"孙子"。它适用于"孩子",但不适用于"孙子"。当我从邮递员发出请求时,我可以看到实体包括"孙子",并且它肯定具有属性"总计"(以及所有其他属性(。

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
}

尝试访问孙子的所有总属性:

var totals = p.Child.GrandChild.Select(gc=> gc.Total);

但是如果你想得到孙子总数(孙子总数(,你应该试试这个:

var count = p.Child.GrandChild.Count();

错误很明显,还是?

GrandChild是一个ICollection(我们可以看到您是否提供相关的类定义(。ICollection上没有总功能。时期。从来没有。这根本不是一个实体框架问题 - 你基本上假设 ThenInclude 会神奇地提供一个关于 ICollection 的 proeprty Total。

鉴于 Total 需要知道如何添加,并且除非集合中的元素是任何类型的标量,这应该如何工作,这根本不可能。

使用逻辑计算总数。

最新更新