TL; DR
Нет, не нужно, чтобы изменить режим промывки. Оставьте это как Auto
, если не уверены. Вы избежите ошибок.
Полное объяснение
Режим по умолчанию вровень Auto
работает, как описано here:
время от времени ISession будет выполнять операторы SQL, необходимые синхронизировать состояние соединений ADO.NET с государством из объектов, хранящихся в памяти. Этот процесс, на одном уровне, происходит по умолчанию в следующих моментов
- от некоторых призываний Find() или Enumerable()
- из NHibernate.ITransaction.Commit()
- из ISession.Flush()
Эта логика делается для обеспечения того, чтобы запрашивая БД не будет возвращать устаревшие данные, в отношении того, что было сделано в текущей транзакции.
исключением случаев, когда вы в явной форме Flush(), нет абсолютно никаких гарантий о том, когда сессия выполняет ADO.NET звонки, только порядок, в котором они выполняются. Однако NHibernate гарантирует, что методы ISession.CreateQuery (..) никогда не возвратят устаревшие данные; ни будут ли они возвращать неверные данные.
Изменение режима флеша по умолчанию может привести к тому, что ваши запросы внутри транзакции возвратят данные, не учитывающие то, что было сделано ранее в одной транзакции.
Если вы не уверены, что не будете укушены какой-либо ошибкой из-за устаревших данных, возвращаемых последующими запросами в той же транзакции, лучше оставить режим очистки как Auto
.
Изменение режима флеша для ограничения округления SQL внутри транзакции потребует проверки всех текущих транзакций и добавления явных вызовов в Flush
, прежде чем запросы должны будут учитывать то, что было ранее сделано в их транзакции. Тогда надейтесь, что любое новое развитие не забудет это сделать. Таким образом, не только вы не обязательно сохраните много SQL-раундов, но и создадите новые возможности для ошибок.
Лично я считаю, что не стоит менять режим флеша по умолчанию в надежде сократить круглые поездки SQL. Особенно, если вы не проверяете, что это делает это значительно или незначительно в случае вашего заявления.