代码之家  ›  专栏  ›  技术社区  ›  frosty

nhibernate:映射到主键以外的列

  •  1
  • frosty  · 技术社区  · 16 年前

    我有下面的地图。我的目的是为了订单.BasketId映射到orderItem.BasketId. 但是当我看到sql时,我看到它正在映射 订单Id至orderItem.BasketId. 如何在订单映射中定义要映射到basketId的订单属性。它似乎默认为主键。

     <class name="Order" table="Orders">
        <id name="Id" type="Int32" column="Order_ID" unsaved-value="0">
          <generator class="identity"/>
        </id>
    
        <property name="BasketId" column="Basket_ID" type="Int32"/>
        <set name="OrderItems" table="item_basket_contents" generic="true" inverse="true"  >
          <key column="Basket_ID" />
         <one-to-many class="EStore.Domain.Model.OrderItem, EStore.Domain"/>      
        </set>
      </class>
    

    和订单项

      <class name="OrderItem" table="Item_Basket_Contents">
        <id name="Id" type="Int32" column="ID" unsaved-value="0">
          <generator class="identity"/>
        </id>
    
        <property name="BasketId" column="Basket_ID" type="Int32"/>
      </class>
    
    2 回复  |  直到 16 年前
        1
  •  8
  •   Diego Mijelshon    16 年前

    使用以下选项:

    <key column="Basket_ID" property-ref="BasketId" />
    

        2
  •  0
  •   mdma    16 年前

    你能改变结构吗?我将有一个篮子实体,其中包含订单项目。然后,您的订单引用这个篮子,篮子中包含了这些项目。按顺序显式的basketID绕过了hibernate所做的一些ORM。