Мне не совсем понятна причина, но я думаю, что это может быть из-за части inverse="true"
. Смысл этого, я думаю, в том, что это означает, что отношения управляются другой стороной, то есть с территории в страну, поэтому удаление элемента из Country.Territories
может работать не совсем так, как вы ожидаете.
Как выглядит ваше картографирование территории? - Я предполагаю, что в нем есть ссылка «один на один» на родителя страны?
Сказав это, мои знания NHibernate по-прежнему в основном находятся на уровне "возиться с настройками, пока они не будут работать так, как я этого хочу". Но я уверен, что вы сможете заставить его работать, изменив атрибут inverse
и / или параметр cascade
(т.е. попробуйте изменить его на «все»).
Что бы это ни стоило, большинство наших отображений, которые используют один-ко-многим, выглядят так, и я думаю, что мы обычно удаляем вещи так же, как вы показали:
<class name="Parent">
<id name="ParentID">
...
<map name="ChildCollection" cascade="all" inverse="true">
</class>
<class name="Child">
...
<many-to-one name="Parent" column="ParentID" not-null="true">
</class>