Я не совсем понимаю, почему на этом, но Flush () предотвратил мою ошибку.
из вещей, которая приводит меня в замешательство, это использованиеsession.Flush
,в сочетании сsession.Commit
, а такжеsession.Close
.
Иногдаsession.Close
работает, например, он фиксирует все изменения, которые мне нужны. Я знаю, что мне нужно использовать коммит, когда у меня есть транзакция, или единица работы с несколькими созданиями / обновлениями / удалениями, чтобы я мог откатиться, если произойдет ошибка.
Но иногда я действительно зацикливаюсь на логикеsession.Flush
, Я видел примеры, когда у вас естьsession.SaveOrUpdate()
с последующей очисткой, но когда я удаляю ее, она все равно работает нормально. Иногда я сталкиваюсь с ошибками в операторе Flush, говоря, что время сеанса истекло, и удаляя его, я не столкнулся с этой ошибкой.
У кого-нибудь есть хорошее руководство относительно того, где и когда использовать Flush? Я проверил документацию NHibernate для этого, но я все еще не могу найти простой ответ.