1
我有一个简单的类称为“父母”,它包含子对象列表称为“孩子”。NHibernate的孤儿孩子当分配新的“孩子”列表“父母”时
两者之间存在一个简单的NHibernate映射:
映射为儿童
// Child mapping
<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" assembly="X" namespace="X">
<class name="Child" table="Childs">
<id name="Id">
<generator class="guid" />
</id>
<property name="Value"/>
</class>
</hibernate-mapping>
父
<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" assembly="X" namespace="X">
<class name="Parent" table="Parents">
<id name="Id">
<generator class="guid" />
</id>
<list name="Childs" lazy="false" cascade="all-delete-orphan">
<key column="ParentId" />
<index column="ChildIndex" />
<one-to-many class="Child"/>
</list>
</class>
</hibernate-mapping>
所以在我的代码映射
IList<Child> NewChildObjectsList =....
Parent.Childs.Clear();
Parent.ChildObjectList = NewChildObjectsList;
Update(Parent);
的问题是,当更新父,父进程得到新的子对象,但存在“孤儿对象”的父ID未在童车表[这些都是旧的子对象列表中的元素]
事实上存在如果我做,只更新结算清单后和分配新的子表不存在由于孤儿对象...
IList<Child> NewChildObjectsList =....
Parent.Childs.Clear();
Update(Parent); // ClearList then update
Parent.Childs = NewChildObjectsList;
Update(Parent); // Add new list then update
什么可能导致此?以及如何解决它?有任何想法吗?
为什么你设置'Parent.Childs = NewChildObjectsList'?显然不够? – Firo 2012-03-01 09:41:17
那么,这是我的“商业案例”...有时我必须添加全新的子列表到现有的父对象。 – Novalis 2012-03-01 09:49:47