NHibernate集合:多对多关系

时间:2010-06-13 23:42:21

标签: c# nhibernate

我有两个型号,一个产品型号和一个ShoppingCart型号。 ShoppingCart模型将产品集合作为名为Products(List)的属性。这是我的ShoppingCart模型的映射。

<class name="MyProject.ShoppingCart, MyProject" table="ShoppingCarts">
  <id name="Id" column="Id">
    <generator class="native" />
  </id>

  <many-to-one name="Company" class="MyProject.Company, MyProject" column="CompanyId" />
  <property name="ExternalId" column="GUID" generated="insert" />
  <property name="Name" column="Name" />
  <property name="Total" column="Total" />
  <property name="CreationDate" column="CreationDate" generated="insert" />
  <property name="UpdatedDate" column="UpdatedDate" generated="always" />

  <bag name="Products" table="ShoppingCartContents" lazy="false">
    <key column="ShoppingCartId" />
    <many-to-many column="ProductId" class="MyProjectMyProject.Product, MyProject" fetch="join" />
  </bag>
</class>

当我尝试保存到数据库时,ShoppingCart已保存,但ShoppingCartContents中的映射行未保存,这使得我认为映射存在问题。我在哪里错了?

2 个答案:

答案 0 :(得分:0)

将级联属性添加到包中

<bag name="Products" table="ShoppingCartContents" lazy="false" cascade="all">

级联有几种选择,来自NH doc:

cascade="all|none|save-update|delete|all-delete-orphan" 

HTH

答案 1 :(得分:0)

您应该执行事务中的更改,否则nhibernate将不会保存集合中的更改。