我有以下课程:
public class Parent
{
public ICollection<Child> Children {get;set;}
}
public class Child
{
}
public class Boy : Child
{
public Toy Toy {get;set;}
}
public class Girl : Child
{
public Book Book {get;set;}
}
我想热切地为所有男孩加载父母:
Parents.Include(p => p.Children.OfType<Boys>().Select(b => b.Toy));
以上操作不起作用,我收到的错误是路径无效。
我如何做到这一点?
答案 0 :(得分:1)
我认为在这种情况下,扩展方法Include
解析为字符串“Boys”,显然,成员方法Include
不能包含它。
即使这会运行,我怀疑拥有Children
个只收集Boy
个对象的集合会有问题。对我来说,这将是该集合的不确定状态,因为它代表了父母的 子女。所以它要么应该包含所有孩子,要么是空的。
如果您经常需要Boys集合(或它的真实链接)及其引用(Toy
),您应该将其映射为单独的导航属性。否则请在Children集合上执行OfType()
。