Позвольте мне начать с того, что я знаю, что NH не рекомендует использовать массовые операции. Но, как немного интерес, мне было интересно, почему это так дорого. Для 200 объектов в моей системе это занимает 4 минуты, для которых 90%% времени тратится на DefaultAutoFlushEventListener.OnAutoFlush (благодаря RedGate Profiler). Это безумно. Интересно, написал ли кто-нибудь пользовательский DefaultAutoFlushEventListener, который временно работает вокруг этого препятствия для больших повторяющихся обновлений.Неудовлетворительная производительность NHibernate на событиях автоматического сброса?
Обновление: На самом деле это не проблема с массовым обновлением, так как это связано с транзакциями и FlushMode для запросов. Но все же, что, черт возьми, делает NH, когда он вспыхивает?
4 минуты для 200 объектов чрезвычайно медленны. Сколько запросов sql генерируется? У вас ведется журнал отладки в log4net (это медленная часть eventlistener)? – Paco
См. Мой ответ ниже. Я до сих пор не отвечал, почему слияние в сеансе с множеством объектов берет FOREVER, но я нашел немного элемента NHibernate. – Trent
Связанный с этим вопрос: http://stackoverflow.com/questions/1726656/why-is-nhibernate-autoflush-check-so-expensive – zvolkov