[英]Entity framework data context does not contain a collection of my entity that uses inheritance. Why?
我正在使用带有实体框架的 model,它利用了 inheritance。 我有一个名为“User”的基本类型的实体和两个从它继承的实体(“Admin”和“Worker”)。 这是 model:
(来源: codetunnel.com )
问题是,当我创建我的实体框架容器时,它没有工作人员或管理员的集合,只有用户。
EntityContainer context = new EntityContainer();
context.Users; // Exists.
context.Workers; // does not exist.
如何获得工作人员/管理员的集合而不仅仅是普通用户? 同样,如何为我的FamilyAccount
实体提供管理员和工人的导航属性,而不是普通用户?
提前致谢!
PS - 如果这很重要,我正在为我的 inheritance 使用每个类型的表model。
.OfType
似乎运作良好。 是否有另一种方法可以为工作人员或管理员实际添加导航属性?
是的,这是 EF 的行为。 如果要导航到 Admin 和 Worker,可以执行以下操作:
var admins = context.Users.OfType<Admin>();
var workers = context.Users.OfType<Worker>();
http://mosesofegypt.net/post/Inheritance-and-Associations-with-Entity-Framework-Part-3.aspx
本文介绍如何扩展实体并自己添加导航属性。 滚动到“构建特定部门查询”header。 这就是我所追求的,消除了使用.OfType<Worker>()
的要求。
现在我可以做familyAccount.Admins
并且在附近一切都很好。
每个类型的表 (TPT) Inheritance 涉及将基本类型的所有属性存储在单个表中。 每个具体类型的表 (TPC) Inheritance 涉及将每种类型的数据存储在一个完全独立的表中,它们之间没有外键约束。
如果您想为 Admins 和 Workers 使用单独的表,那么您可能应该使用 TPC。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.