在nhibernate中使用两个连接的子类

时间:2009-12-07 20:30:46

标签: nhibernate

好的,是nhibernate的新手,我正在开发一个已经完全实现它的项目。

Scenerio:一个类(Person)有两个连接的子类(RoleA和RoleB)。

我需要的是一个给定的人实际上可以同时在RoleA和RoleB中。如果给定一个已经创建过的人并且在RoleA中,我是否可以在RoleB中同时创建它们,同时保持与RoleA的关系?

1 个答案:

答案 0 :(得分:0)

所以,你有类似以下内容(学生和教师取代RoleA和RoleB):

<class name="Person" table="Persons" >
  <id name="Id" column="PersonID">
    <generator class="native" />
  </id>
  <property name="Name" column="Name" not-null="true" />

  <joined-subclass name="Student" table="Students">
    <key column="PersonID" />
    <property name="Grade" column="Grade" not-null="true" />
  </joined-subclass>

  <joined-subclass name="Teacher" table="Teachers">
    <key column="PersonID" />
    <property name="ClassName" column="ClassName" not-null="true" />
  </joined-subclass>
</class>

如果是这种情况,最好的办法是使用一对一的映射来完成同样的事情。这是一个很好的参考:http://nhibernate.info/doc/nh/en/index.html#mapping-declaration-onetoone

这个人和你有类似的问题,最后选择了一对一的映射选项: http://groups.google.com/group/nhusers/browse_thread/thread/1d83e0cd3c2bf58f