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