首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >连接共享公共列但没有外键的NHibernate类

连接共享公共列但没有外键的NHibernate类
EN

Stack Overflow用户
提问于 2008-11-20 22:24:16
回答 2查看 2.1K关注 0票数 1

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

代码语言:javascript
复制
Asset
---------
AssetId
AssetName

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

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

基本上,我想做的是将Product Table连接到AssetId上的Disposal表,这样我的Product就有一个由资产连接的处置集合。我已经定义了下面的映射,但是NHibernate (1.2)似乎忽略了包中定义的键列,并选择通过ProductId将Product表连接到Disposal表(即Product.ProductId = Disposal.AssetId)。我不确定这是一个bug,还是我没有正确地定义它,但如果有人有办法做到这一点,我将是最好的。

代码语言:javascript
复制
  <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>
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2009-04-15 08:11:31

干净的方式:

代码语言:javascript
复制
  <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>

外键用于DDL,我认为它是模式导出生成的外键约束的名称。

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

代码语言:javascript
复制
  <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>
票数 0
EN

Stack Overflow用户

发布于 2008-11-21 16:13:40

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

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

您的模式告诉我,一个Asset有许多产品,一个Asset有许多处置。没有说明处理是针对特定产品的。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/307094

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档