实体框架ThenInclude不包含孙代的属性

时间:2020-06-15 14:05:42

标签: .net entity-framework-core

实体框架ThenInclude不包含孙代的任何属性。当我尝试访问“ GrandChild”的属性“ Total”时,出现错误“ CS1061'ICollection'不包含'Total'的定义,并且没有可访问的扩展方法'Total'”。智能感知根本不适用于“ GrandChild”。它与“孩子”一起工作正常,但与“大孩子”一起工作并非如此。当我从邮递员发出请求时,我可以看到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

            }

2 个答案:

答案 0 :(得分:0)

尝试此操作以访问GrandChild的全部属性:

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

但是,如果您想获得孙子总数(孙子数),则应尝试以下操作:

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

答案 1 :(得分:0)

错误很明显,还是?

GrandChild是一个ICollection(我们可以查看是否提供相关的类定义)。 ICollection上没有Total函数。期。从来不是。这根本不是Entity Framewor的问题-您基本上假设,那么ThenInclude将神奇地在ICollection上提供适当的合计。

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

使用逻辑来计算总数。

相关问题