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