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

nhibernate:一对一映射

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

    我有下面的地图。我想把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>
    

    我也读过,我应该避免一对一,只使用一对多?如果我要这样做,我如何确保我只得到一个产品,而不是一个集合。

    select * from BasketItem
    inner join Products on BasketItem.Item_ID = Products.Item_ID
    
    1 回复  |  直到 15 年前
        1
  •  4
  •   Pascal Thivent    16 年前

    如何指定产品应与BasketItem.ProductId和product.Id匹配

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

    我也读过,我应该避免一对一,只使用一对多?如果我要这样做,我如何确保我只得到一个产品,而不是一个集合。

    如果您想能够懒洋洋地加载 产品

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