子类在继承映射中不能有标识列
Posted
技术标签:
【中文标题】子类在继承映射中不能有标识列【英文标题】:sub classes can not have identity columns in inheritance mapping 【发布时间】:2013-09-21 05:16:22 【问题描述】:我正在使用 Telerik ORM 的 ORM 工具和 Devexpress ORM 数据模型向导设计一个数据库。 我有两个班级,一个员工班级和个人班级。雇员类继承自作为基类的人员类。 两个 ORM 都坚持认为 person 类必须有一个足够公平的标识列/键。 但我希望员工类也也有一个标识列,但要从两个 ORM 都不允许的人员类继承属性。这也包括 nHibernate。 有人知道如何解决这个问题吗?
【问题讨论】:
要获取 Employee 的 ID,你可以使用基类 Person 的 ID 吗?还是您的数据库有两张表employee 和person? 我的数据库有两个表employee和person,但是它不允许employee的主键是子表 我只知道 Nhibernate,但您似乎正在为每个具体类寻找表,请参阅此博客文章 ayende.com/blog/3941/nhibernate-mapping-inheritance 似乎 postgresql 支持这个,但除了这个论坛中的 NHIBERNATE 之外没有其他 ORM:forum.hibernate.org/viewtopic.php?f=1&t=936671 【参考方案1】:继承是一种“是”的关系;员工是一个人,所以员工的身份证就是一个人的身份证。如果您按照 Rippo 的建议使用每个具体类映射的表,那么 Employee 表应该有一个 PersonId 的主键,它也是 Person 表的外键。
我也会考虑使用角色而不是继承来建模这种关系。
【讨论】:
以上是关于子类在继承映射中不能有标识列的主要内容,如果未能解决你的问题,请参考以下文章