Если вы посмотрите документацию для атрибута inverse
в сопоставлениях свойств типа коллекции, вы обнаружите, что настройка inverse="false"
указывает NHibernate наблюдать за родительским объектом (объектом, содержащим коллекцию) на предмет изменений в коллекции, а также для вставки / удаления дочерних объектов на основе добавления / удаления в дочерней коллекции родителя.
Но когда вы устанавливаете inverse="true"
, вы указываете NHibernate наблюдать за дочерним объектом на предмет изменений в ссылочном свойстве обратно к родительскому объекту. Поэтому, когда вы устанавливаете свойство родительской ссылки дочернего элемента, NHibernate затем переходит и изменяет ассоциацию.
Похоже, вы не хотите устанавливать inverse="true"
в родительской коллекции родителей.
Добавление:
RemoveComment
может отсоединить родителя от ребенка (как, например, установить child.Parent = null
). Но если он также не отсоединяет дочерний элемент от Session
, и если коллекция помечена inverse="true"
, что указывает на то, что ребенок владеет ассоциацией, а не коллекцией, владеющей ассоциацией, то NHibernate не будет отправлять delete
, NHibernate будет отправлять delete
только в том случае, если объект должен быть удален - a) если коллекции принадлежит ассоциация (inverse="false"
), и каскадирование коллекции настроено на удаление, и объект удаляется из коллекции, или б) если объект удален из Session
.