簡體   English   中英

nhibernate:一對一映射

[英]nhibernate : One to One mapping

我有以下地圖。 我希望將BasketItem映射到“Product”類。 所以基本上當我通過籃子迭代時我可以獲得產品名稱

<class name="BasketItem" table="User_Current_Basket">
<id name="Id" type="Int32" column="Id" unsaved-value="0">
<generator class="identity"/>
</id>
<property name="ProductId" column="Item_ID" type="Int32"/>
  <one-to-one   name="Product"
        class="Product"></one-to-one>
</class>

如何指定該產品應該與Product.Id匹配BasketItem.ProductId

另外我讀過我應該避免一對一,只使用一對多? 如果我這樣做,我如何確保我只獲得一個產品而不是一個集合。

//編輯

select * from BasketItem
inner join Products on BasketItem.Item_ID = Products.Item_ID

如何指定該產品應該與Product.Id匹配BasketItem.ProductId

您的BasketItem應該在對象級別持有Product ,而不是ProductId 映射應該是:

<class name="BasketItem" table="User_Current_Basket">
  <id name="Id" type="Int32" column="Id" unsaved-value="0">
    <generator class="identity"/>
  </id>
  <one-to-one name="Product" class="Product"/>
</class>

另外我讀過我應該避免一對一,只使用一對多? 如果我這樣做,我如何確保我只獲得一個產品而不是一個集合。

如果您希望能夠延遲加載Product ,請選擇“假”多對一:

<class name="BasketItem" table="User_Current_Basket">
  <id name="Id" type="Int32" column="Id" unsaved-value="0">
    <generator class="identity"/>
  </id>
  <many-to-one name="Product" class="Product"/>
</class>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM