NHibernate不';t保存对象';收集物品
我有一个包含OrderItems的Order类。当我保存Order类时,数据库将填充订单信息,但没有子OrderItems保存到各自的表中。以下是订单映射的外观: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
<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中声明。有必要吗?