На практике мы находим, что стандартное NHibernate (v2.0 и 2.1) FlushMode = Auto является чрезвычайно дорогим. Анализ источника NHibernate показывает, что алгоритмы определения того, что необходимо очистить, основаны на грубой силе циклического прохождения всех объектов в сеансе, и это происходит для каждого запроса, выполняемого в транзакции.
В некоторых производственных сценариях с обновлениями для многих элементов с несколькими запросами мы видели процесс в 100 раз дольше с FlushMode = Auto по сравнению с FlushMode = Commit.
Любые мысли / советы / рекомендации по использованию FlushMode при выполнении «сложной» логики сеанса, включающей несколько обновлений, несколько запросов и т. Д.
Какие-нибудь идеи по оптимизации алгоритмов AutoFlush в nHibernate?