Это ожидаемое поведение. Я полагаю, что это должно происходить только тогда, когда вы используете стратегию отображения bag , которую, похоже, они используют в примере. Сумка указывает на наличие неупорядоченной коллекции, в которой могут быть повторяющиеся элементы. Так как элементы сумки не уникальны, NHibernate не может определить, когда вы легко добавили или удалили элемент из сумки. Самое простое для NHibernate - это удалить все ассоциации, а затем заново добавить.
Прошло много времени с тех пор, как я играл с отображениями "многие ко многим" (я обычно просто отображаю как два отношения "один ко многим"), но я считаю, что если вы используете другую конструкцию, например, набор (что не допускает дублирование) вы должны обнаружить, что поведение отличается. Конечно, вы должны использовать то, что когда-либо конструирует, имеет наиболее смысловой смысл для вашего приложения.