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

在nhibernate中使用两个连接的子类,nhibernate,Nhibernate,好的,我是nhibernate的新手,我正在做一个已经完全实现的项目 场景:一类人有两个相连的子类RoleA和RoleB 我需要的是,一个给定的人实际上可以同时在RoleA和RoleB中。当一个人已经在RoleA中被创造出来时,我怎样才能在RoleB中也创造他们,同时保持与RoleA的关系呢?因此,学生和教师取代了RoleA和RoleB,你有如下情况: <class name="Person" table="Persons" > <id name="Id" column="

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

场景:一类人有两个相连的子类RoleA和RoleB


我需要的是,一个给定的人实际上可以同时在RoleA和RoleB中。当一个人已经在RoleA中被创造出来时,我怎样才能在RoleB中也创造他们,同时保持与RoleA的关系呢?

因此,学生和教师取代了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>
如果是这种情况,那么最好使用一对一映射来完成相同的任务。这里有一个很好的参考:

此人遇到了与您类似的问题,最终选择了一对一映射选项: