У меня есть один класс, ссылающийся на себя. Ребенок имеет ссылку на своего родителя, а родитель имеет список детей. Поскольку список детей упорядочен, я пытаюсь отобразить отношения, используя NHibernate.
Это мое отображение:
<class name="MyClass">
<id name="Id">
<generator class="native"/>
</id>
<list name="Children" cascade="delete" inverse="true">
<key column="ParentId"/>
<index column="ListOrder"/>
<one-to-many class="MyClass"/>
</list>
<many-to-one name="Parent" class="MyClass" column="ParentId"/>
</class>
Проблема, с которой я сталкиваюсь, заключается в том, что, когда у меня есть родительский объект двунаправленного отображения <->, индекс списка (ListOrder) не обновляется в базе данных, когда я выполняю танец CRUD. Это означает, что когда я, например, удалить ребенка, я получаю дыры в списке детей после сохранения в базе данных и повторного извлечения родителя. Если я удаляю двунаправленность, не имея много-к-одному от дочерних элементов к родительскому (и не обращая = true), ListOrder обновляется правильно.
Кто-нибудь из вас видел это раньше? Есть ли простое решение?