这里的NHibernate的歧视性的子类是我的层次结构:一个连接子类
class abstract Entity { /*members*/ } // mapped to entity table class abstract User : Entity { /*members*/ } // mapped to user table class Employee : User { /*no members*/ } // no table, discriminator = "E" class Contractor : User { /*no members*/ } // no table, discriminator = "C"
这里是我在两个不同的HBM文件的映射:
<class name="Entity" table="entity" xmlns="urn:nhibernate-mapping-2.2"> <id name="Id" column="id"> <generator class="guid.comb" /> </id> <property ... /> </class> <joined-subclass name="User" extends="Entity" table="user"> <key column="id" /> <discriminator column="type" /> <property ... /> <subclass name="Employee" discriminator-value="E" /> <subclass name="Contractor" discriminator-value="C" /> </joined-subclass>
以下是例外,我得到:
MappingException:XML验证错误:命名空间'urn:nhibernate-mapping-2.2'中的元素'joined-subclass'在命名空间'urn:nhibernate-mapping-2.2'中具有无效的子元素'discriminator'。
我错过了什么?你能不能映射联合子类的区别子类层次结构?
联合子类可以在单独的文件中定义;然而,那不是重点。我想你错过了“独立表”是基于鉴别器的新的继承层次的根。也许你可以提供一个映射,它会做类似于我感到困惑的事情。 – 2011-01-24 18:32:46
@Travis,有趣的重新加入子类。但是,您的用户映射仍然必须是子类,而不是联合子类,因为它在另一个表中。 – Vadim 2011-01-24 18:46:55