У меня есть простой класс, называющий его «Parent», и он содержит список дочерних объектов, называющих его «Child».
Между ними существует простое отображение nhibernate:
Mapping для Child
// 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>
Mapping для Parent
<?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);
Проблема в том, чтопри обновлении parent родитель получает новые дочерние объекты, но существуют «дочерние объекты-сироты», чей идентификатор родителя не существует в таблице Childs [это старые элементы списка дочерних объектов]
Фактически, если я это сделаю и обновлю толькопосле списка очистки и после назначения нового дочернего списка не существует дочерних объектов-сирот ...
IList<Child> NewChildObjectsList =....
Parent.Childs.Clear();
Update(Parent); // ClearList then update
Parent.Childs = NewChildObjectsList;
Update(Parent); // Add new list then update
Что может вызвать это?И как это исправить?Есть идеи?