Согласно NHibernate документации, заявления SQL выпускаются в следующем порядке, когда сеанс продувают:Nhibernate порядок операторов SQL при промывке сессии
- все вставки сущности, в том же порядке соответствующие объекты были сохранены с помощью ISession.Save()
- все предприятие обновляет
- все делеции коллекции
- все коллекции элементов делеции, обновления и вставки
- все коллекции insertio нс
- все объектные делеции, в том же порядке соответствующие объекты были удалены с помощью ISession.Delete()
Почему вынужден в таком порядке, и есть ли способ изменить его так, что операторы выполняются в том же порядке, что я им даю?
Я заинтригован этим. Почему вы хотите другой порядок, чего вы пытаетесь достичь? – Rippo
Хорошо, не вдаваясь в подробности, у меня есть много-много таблиц (с составным pk), которые я пытаюсь удалить сначала, а затем повторно вставлять при сохранении родителя; Я установил inverse = true в родительскую коллекцию, поэтому мне нужно управлять сохранением самостоятельно, но поскольку вставки происходят до удаления, я получаю нарушение ограничений, если мне нужно переустановить старую много-много. Я играю с NH всего один день, все еще пытаюсь разобраться в деталях. – LMC