【问题标题】:How to make a Many-to-One relationship with a link table in between?如何与两者之间的链接表建立多对一关系?
【发布时间】:2015-12-08 19:32:31
【问题描述】:

我在获取正确的 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>

想象在这个例子中,一辆汽车只能有一个司机,但一个司机可以有多辆汽车,我将如何在 Car 映射中添加多对一关系以允许汽车查看哪个司机可以驾驶它,使用 CarDriverLinks 表?

【问题讨论】:

  • 我认为您正在寻找的是多对多关系

标签: c# nhibernate nhibernate-mapping


【解决方案1】:

因此,对于一对多、多对一,您不一定需要在两者之间使用交叉引用表。这会给你一个多对多的关系。由于每辆车只有一个司机,您可以将 DriverID 添加到您的 Car 表和类中。您的司机仍然可以拥有多辆汽车。我使用 Fluent NHibernate,所以我真的不记得 XML 映射,但请查看这个问题,它解释了您正在寻找的其他内容。 One To Many, Many To One - NHibernate

【讨论】:

  • 我知道我不一定需要一个交叉引用表,但我有一个,我需要使用它,因为我不能走简单的路线并将 DriverKey FK 添加到 Car表。
猜你喜欢
  • 1970-01-01
  • 2017-12-28
  • 1970-01-01
  • 2011-02-26
  • 1970-01-01
  • 2017-08-05
  • 2018-03-06
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多