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”中的鉴别器。
我缺少什么?您不能映射连接子类的可区分子类层次结构吗?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
您想做的事情目前是不可能的。
检查http://www.nhforge.org/doc/nh/en/ index.html#inheritance 用于允许的构造。
What you want to do is not currently possible.
Check http://www.nhforge.org/doc/nh/en/index.html#inheritance for allowed constructs.
join-subclass 没有鉴别器,因为它位于单独的表中。这就是它知道子类是什么的方式。如果您想使用鉴别器,您将为所有子类使用一张表,并且您将使用 子类映射
joined-subclass doesn't have a discriminator because it's in a separate table. That's how it knows what the subclass is. If you want to use a discriminator you would use one table for all of your subclasses and you would use the subclass mapping