Сначала автоматическая сирота удаляется. Сайты не могут быть удалены автоматически, если ваше отношение определено как many-to-many
.Но если ваша таблица promotions_sites
отображается как отдельная сущность, и у вас есть два отношения one-to-many
на сайтах и рекламных акциях , вы можете добиться автоматического удаления, установив cascade о тех отношениях к all-delete-orphan
.
Второе - где управлять коллекцией.Вы должны позволить NHibernate сделать это.Предполагая, что у вас есть правильные отображения, вы не должны заботиться об этом на уровне приложения или особенно на уровне триггера базы данных.В любом случае, логика обработки коллекций в NHibernate несколько отличается от того, что вы, возможно, знаете на уровне базы данных.Обычно вам нужно загрузить родительский объект с существующей дочерней коллекцией, изменить коллекцию и зафиксировать изменения в базе данных.Вы не должны заменять всю коллекцию.
Но вам будет легче говорить, когда вы покажете свои сопоставления и код, использованный для сохранения изменений.