NHibernate - 实现多个接口的映射类

时间:2009-11-21 05:46:17

标签: c# .net nhibernate orm

我使用Table Per Subclass策略来持久化继承层次结构:


alt text http://dl.dropbox.com/u/1563210/budget%20obj%20graph.jpg
关于如何映射实现2个接口的Debit类,我遇到了一些困惑。我可能会过度思考它;我还在学习NH。

感谢您的任何意见。

修改

让我感到困惑的是,我的具体课程所拥有的唯一属性是他们从这些界面获得的。这就是为什么我认为我必须将接口与具体类一起映射。

2 个答案:

答案 0 :(得分:1)

NHibernate不了解或关心接口。例如,您不能使用NHibernate查询实现特定接口的对象。您有一个每表类映射,因此您应该将子类声明映射为described in the documentation

答案 1 :(得分:0)

我自己对NHibernate很新,但我做了类似的事情,所以如果我发布一些正确的内容,它会给我们一个开始,所以你可以发表评论,并且在stackoverflow的精神中,有人可以编辑我的答案。

我认为hbm基本上需要使用“subclass”,“joined-subclass”或“union-subclass”来实现你想要的东西。

<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2"
                   assembly="YourAssembly.Bll"
                   namespace="YourAssembly.Bll.Domain">
  <class name="Transaction" table="Transaction">
    <id name="Id">
      <generator class="native"/>
    </id>
    <property name="Amount" not-null="true" />
    <property name="Currency"/>

    <joined-subclass name="Debit" table="DebitTransaction">
      <key column="TransactionId"/>
      <property name="CardHolderName" not-null="true" />
    </joined-subclass>

  </class>
</hibernate-mapping>

Hibernate docs on inheritance非常有用