Refresh (parentObject) был бы хорошим вариантом, но для меня он сначала выбирал всех детей по одному с помощью одного запроса. Нет пакетирования, нет подзапроса, нет объединения. Очень плохо!
Помогло .Clear () дочерней коллекции родительского объекта; Я также выселил дочерние объекты раньше.
(они были изменены обновлением HQL раньше, когда множественные вставки родительским / дочерним элементом SaveOrUpdate вызывали бы перестроения дорогих кластерных индексов).
РЕДАКТИРОВАТЬ: Я снова удалил обновление HQL, поскольку запрос (уменьшение индекса на уникальное большое число) был дороже, чем сотни однострочных обновлений в пакете. Таким образом, я попал в простой SaveOrUpdate (parentObject), без необходимости обновлять.
Причиной была дочерняя коллекция с уникальным ограничением на ParentID и Index (порядковый номер), что приводило к нарушениям уникальности при обновлении измененных дочерних элементов. Таким образом, индекс сначала был увеличен на 1000000 (или произвольно большое число) для всех детей, а затем после изменений снова уменьшился.