моя проблема похожа на эту: (ссылка)
но у меня связь один-ко-многим:
<set name="Fields" cascade="all-delete-orphan" lazy="false" inverse="true">
<key column="[TEMPLATE_ID]"></key>
<one-to-many class="MyNamespace.Field, MyLibrary"/>
</set>
(я тоже пытался использовать)
это отображение для шаблона объекта. для этого объекта и Field их идентификаторы генераторов установлены на identity .
поэтому, когда я вызываю session.Update для объекта Template, он работает нормально, ну почти:
если объект Field имеет номер Id, вызывается SQL-запрос UPDATE, если Id равен 0, выполняется INSERT. Но если я удаляю объект Field из коллекции, он не влияет на базу данных. Я обнаружил, что если я также вызову session.Delete для этого объекта Field, все будет хорошо, но из-за архитектуры клиент-сервер я не знаю, что удалить.
поэтому я решил удалить все элементы коллекции из БД и вызвать сессию. Обновите новую коллекцию. и у меня возникла проблема: nhibernate выполняет операцию UPDATE для объектов Field с ненулевым Id, но они удаляются из БД!
может быть, мне стоит использовать какой-нибудь другой генератор Id или что-то в этом роде ...
Каков наилучший способ заставить nhibernate выполнить процедуру «удалить все» / «вставить все» для коллекции?