nhibernate: отображение на столбец, отличный от первичного ключа - PullRequest
1 голос
/ 15 мая 2010

У меня есть следующая карта. Мое намерение - для order.BasketId для сопоставления с orderItem.BasketId. То, когда я смотрю на sql, я вижу, что это отображение order.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>

и orderItem

  <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 ]

8 голосов
/ 15 мая 2010

Используйте следующее:

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

Вот и все.

0 голосов
/ 15 мая 2010

Можете ли вы изменить структуру? Я хотел бы иметь объект Корзина, который содержит элементы заказа. Ваш заказ относится к этой корзине, и корзина содержит товары. Явный basketID в Order обходит некоторые из ORM, которые делает Hibernate.

...