1

我有几个表要映射到类。表格如下所示:

Asset
---------
AssetId
AssetName

Product
---------
ProductId
ProductName
AssetId

Disposal
---------
DisposalId
AssetId
DisposalDate

基本上我想要做的是将 Product Table 加入 AssetId 上的 Disposal 表,以便我的 Product 具有由资产连接的 Disposal 集合。我已经定义了以下映射,但 NHibernate (1.2) 似乎忽略了包中定义的键列,并选择通过 ProductId 将 Product 表连接到 Disposal 表(即 Product.ProductId = Disposal.AssetId)。我不确定这是否是一个错误,或者我是否没有正确定义它,但如果有人有办法做到这一点,我会非常感激。

  <class name="Product" table="Product" lazy="false">
    <id name="ProductId" column="ProductId" type="int">
      <generator class="native" />
    </id>
    <property name="ProductName" column="ProductName"/>
    <bag name="Disposals" fetch="join" >
      <key column="AssetId" foreign-key="AssetId/>
      <many-to-many class="Disposal"/>
    </bag>
  </class>
4

2 回答 2

1

您是否已将您的处置映射到产品?

您的架构并不唯一地将处置与产品相关联。处置只能与资产相关,而不能与产品相关。

您的架构对我说,资产有很多产品,而资产有很多处置。没有什么说处置是针对特定产品的。

于 2008-11-21T16:13:39.730 回答
0

干净的方式:

  <class name="Product" table="Product" lazy="false">
    <id name="ProductId" column="ProductId" type="int">
      <generator class="native" />
    </id>
    <property name="ProductName" column="ProductName"/>
    <many-to-one name name="Asset" class="Asset" column="AssetId" />
  </class>

  <class name="Asset">
    <id name="AssetId" >
      <generator class="native" />
    </id>
    <property name="AssetName" />
    <bag name="Disposals">
      <key column="AssetId" />
      <many-to-many class="Disposal" />
    </bag>
  </class>

foreign-key 用于 DDL,我认为是 schema 导出生成的外键约束的名称。

您可以尝试 property-ref,但不完全确定它是否有效:

  <class name="Product" table="Product" lazy="false">
    <id name="ProductId" column="ProductId" type="int">
      <generator class="native" />
    </id>
    <property name="ProductName" column="ProductName"/>
    <property name="AssetId" />
    <bag name="Disposals" fetch="join" >
      <key column="AssetId" property-ref="AssetId/>
      <one-to-many class="Disposal"/>
    </bag>
  </class>
于 2009-04-15T08:11:31.377 回答