2010-05-15 2 views
1

다음지도가 있습니다. 내 의도는 order.BasketId를 orderItem.BasketId에 매핑하는 것입니다. 그건 내가 SQL을 볼 때 그것은 order.Id to OrderItem.BasketId 매핑을 참조하십시오. 내 order 맵에서 basketId에 매핑 할 프로퍼티를 어떻게 정의 할 수 있습니까? 그것은 기본 키로 기본 것으로 보인다.nhibernate : 기본 키 이외의 열로 매핑

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

답변

0

당신은 구조를 변경할 수 있습니까? 주문 항목이 들어있는 Basket 엔티티가 있습니다. 주문한 다음이 바구니를 참조하고 바구니에 품목이 들어 있습니다. Order의 explicit basketID는 최대 절전 모드에서 수행되는 ORM을 우회합니다.

+0

난 엉망이 DB 구조를 상속했습니다. 이상적으로 당신이 말했듯이 나는 그것을 바꿀 것이지만, 이것이 어쩌면 어떤 다른 사람의 땅에서도 잡히지 않는 앱의 나머지 부분이 어떻게 될지는 모르겠다. – frosty

8

는 다음을 사용하여 그것을

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

있다고.

+0

아, 알았다. 다시 한 번 감사드립니다 :) – frosty

+0

감사합니다! 그것은 나를 많이 도왔다! property-ref 애트리뷰트가 필요하다는 것과 child-relationship에 관한 다 대일 클래스에 주목했다. 하지만 이것은 선택 N + 1 문제를 일으켰습니다. – Vasea