如何在nhibernate中映射更深层次的层次结构

时间:2009-01-05 20:38:35

标签: nhibernate inheritance nhibernate-mapping

我有这个对象图,我想映射:

  • 抽象帐户(用户名,密码,...)
    • 抽象客户(购物车,订单,角色)
      • IndividualCustomer(用户数据)
      • CorporateCustomer(不同的用户数据,公司数据)
    • 管理员(adminroles)

如何针对一个表映射? (我知道如何使用只有1级深度的实体层次结构,就像在文档中一样,但这是不同的。)

有人有想法吗? 我问了同样的问题 http://groups.google.com/group/nhusers/browse_frm/thread/7a85cba0048c18d8?hl=en,但到目前为止还没有得到有用的答案。

2 个答案:

答案 0 :(得分:2)

从我看来,它应该与一级深层次结构没有什么不同。 试试这个:

<hibernate-mapping> 
<class                                                     
    name="Account" 
    table="..." > 
    <property .../> 
        ... 
    <subclass                                              
        name="Customer" > 
        <property ... "/> 
        ... 
    </subclass> 

    <subclass                                              
        name="IndividualCustomer" > 
        <property ... "/> 
        ... 
    </subclass> 
    ... 
</class> 

我这里没有NHibernate来检查它,但它看起来应该可行。如果不是,您可能还想尝试嵌套子类元素。

答案 1 :(得分:2)

嵌套子类是针对xml架构的,所以我的猜测是,它不起作用。 我可能还需要嵌套鉴别器声明,这也似乎是hackish。

并将其映射为平面...我传递一个抽象类的鉴别器,由于无法实例化抽象类,因此无法使用它。似乎也是错的。

但你是对的,我会试一试。现在,对我来说,让客户拥有帐户似乎更好,而不是一个帐户。

谢谢!