Я не совсем понимаю, почему на этом, но Flush () предотвратил мою ошибку.

из вещей, которая приводит меня в замешательство, это использованиеsession.Flush,в сочетании сsession.Commit, а такжеsession.Close.

Иногдаsession.Close работает, например, он фиксирует все изменения, которые мне нужны. Я знаю, что мне нужно использовать коммит, когда у меня есть транзакция, или единица работы с несколькими созданиями / обновлениями / удалениями, чтобы я мог откатиться, если произойдет ошибка.

Но иногда я действительно зацикливаюсь на логикеsession.Flush, Я видел примеры, когда у вас естьsession.SaveOrUpdate() с последующей очисткой, но когда я удаляю ее, она все равно работает нормально. Иногда я сталкиваюсь с ошибками в операторе Flush, говоря, что время сеанса истекло, и удаляя его, я не столкнулся с этой ошибкой.

У кого-нибудь есть хорошее руководство относительно того, где и когда использовать Flush? Я проверил документацию NHibernate для этого, но я все еще не могу найти простой ответ.

Ответы на вопрос(4)

Ваш ответ на вопрос