如何与中间的链接表建立多对一关系?

时间:2015-12-08 19:32:32

标签: c# nhibernate nhibernate-mapping

我在获取正确的hbm.xml以便在链接表上映射多对一关系时遇到问题:

  <class name="Car" table="Cars" lazy="true"> 
    <id name="CarKey" type="int">
      <generator class="native" />
    </id>
    [properties]...
    <many-to-one ??? />
  </class>

  <class name="Driver" table="Drivers" lazy="true"> 
    <id name="DriverKey" type="int">
      <generator class="native" />
    </id>
    [properties]...
  </class>

  <class name="CarDriverLink" table="CarDriverLinks" lazy="true"> 
    <id name="CarDriverLinkKey" type="int">
      <generator class="native" />
    </id>
    <property name="CarKey">
      <column name="CarKey" sql-type="int" not-null="true" />
    </property>
    <property name="DriverKey">
      <column name="DriverKey" sql-type="int" not-null="true" />
    </property>
  </class>

想象一下,在这个示例中,汽车只能有一个驱动程序,但是驱动程序可以有多个汽车,我如何在汽车映射上添加多对一关系以允许汽车查看哪个驱动程序可以驱动它,使用CarDriverLinks表?

1 个答案:

答案 0 :(得分:0)

因此,对于一对多,多对一,您不一定需要在它们之间使用交叉引用表。这会给你一个多对多的关系。由于每辆车只有一个驱动程序,因此您可以在Car表和类中添加DriverID。你的司机仍然可以有多辆车。我使用Fluent NHibernate,所以我不记得XML映射,但请查看这个问题,解释您正在寻找的其余部分。 One To Many, Many To One - NHibernate