NHibernate不';t保存对象';收集物品

NHibernate不';t保存对象';收集物品,nhibernate,collections,Nhibernate,Collections,我有一个包含OrderItems的Order类。当我保存Order类时,数据库将填充订单信息,但没有子OrderItems保存到各自的表中。以下是订单映射的外观: <class name="Order" table="Orders"> <id name="OrderID" column="OrderID" type="Int64" unsaved-value="0"> <generator class="identity"/> </id> &l

我有一个包含OrderItems的Order类。当我保存Order类时,数据库将填充订单信息,但没有子OrderItems保存到各自的表中。以下是订单映射的外观:

<class name="Order" table="Orders">
<id name="OrderID" column="OrderID" type="Int64" unsaved-value="0">
  <generator class="identity"/>
</id>
<list name="OrderItems" table="OrderItems" inverse="true" >
  <key column="OrderID"/>
  <index column="OrderItemID" />
  <one-to-many class="OrderItem" />
</list>
<class name="OrderItem" table="OrderItems">
<id name="OrderItemID" column="OrderItemID" type="Int64" unsaved-value="0">
  <generator class="identity"/>
</id>
<property name="OrderID" />
<many-to-one name="Order" class="Order" column="OrderID" not-null="true" />
</class>
if (o.CreatedBy == null || o.CreatedBy == string.Empty) {
       o.CreatedBy = userID.ToString();
       foreach (OrderItem oi in obj.OrderItems) {
           oi.CreatedBy = userID.ToString();
           oi.ModifiedBy = userID.ToString();
           oi.ModifiedOn = DateTime.Now;
        }
 }
 o.ModifiedBy = userID.ToString();
 o.ModifiedOn = DateTime.Now;
 ISession session = NHibernateHelper.GetCurrentSession();
 ITransaction tx = session.BeginTransaction();
 session.Save(o);
 tx.Commit();
 NHibernateHelper.CloseSession();

知道为什么没有保存子OrderItems吗?

cascade=“all”
添加到集合映射中。

cascade=“all”
添加到集合映射中。

要使更新命令在订单的所有子级上传播,需要在集合映射上启用级联更新:

<list name="OrderItems" table="OrderItems" inverse="true" cascade="all">
  <key column="OrderID"/>
  <index column="OrderItemID" />
  <one-to-many class="OrderItem" />
</list>

要使update命令在订单的所有子级上传播,您需要在集合映射上启用级联更新:

<list name="OrderItems" table="OrderItems" inverse="true" cascade="all">
  <key column="OrderID"/>
  <index column="OrderItemID" />
  <one-to-many class="OrderItem" />
</list>

您能否发布一段代码,说明如何创建对象、建立关系,然后保存?你的映射看起来很好,所以我猜它与代码有关。你能发布一些代码来展示你的对象是如何创建、建立关系,然后保存的吗?您的映射看起来很好,所以我猜它与代码相关。如果我错了,请纠正我。在NHibernate中,只有set和bag支持双向关系,而不是list。它在OrderItem中声明。有必要吗?如果我错了,请纠正我。在NHibernate中,只有set和bag支持双向关系,而不是list。它在OrderItem中声明。有必要吗?