Достаточно взглянуть на исходный код :
Проверяет, разрешено ли изменение идентификатора клиента котировки для текущего пользователя.
BLOCKQUOTE>
Следующее является большим сообщением на пакетной обработке в, в спящем режиме, который является тем, какой NHibernate основан на и тесно следует:
http://relation.to/Bloggers/BatchProcessingInHibernate
Как Вы видите, предлагаемые действия должны установить разумный пакетный размер в конфигурации, которую Вы сделали, но также звонить session.flush()
и session.clear()
каждые приблизительно 20 записей.
Мы использовали этот метод сами и можем теперь создать и сохранить 1000 + объекты в секундах.
Вы могли загрузить целевой тип в Список и затем назвать Систему. Данные. SqlClient. BulkCopy к BCP данные в целевую таблицу.
Это позволило бы обрабатывать больших объемов.
Согласно этому сообщению nhusers, Вы видящий 1000 вставляете в SQL-сервер, не должен действительно иметь значения, потому что оптимизация сделана на другом уровне. Если у Вас действительно нет усиления в производительности, пробование новой версии NHibernate могло бы помочь указывающий на разрешение.
я попробовал подобный материал nh, никогда действительно получил высокую эффективность. я не забываю улаживать с выполнением сброса каждые 10 записей и фиксацию каждые 50 записей для получения повышения производительности как с каждой вставкой, процесс постоянно становился медленнее. Это действительно зависит от размера объекта, таким образом, Вы могли играть вокруг с теми числами, возможно, можно сжать некоторую производительность из него.
Вызов к ITransaction. Фиксация Сбросит Вашу Сессию, эффективно пишущий Ваши изменения в базе данных. Вы называете Фиксацию после каждого Сохранения, таким образом, будет ВСТАВКА для каждого Поставщика.
Я попытался бы назвать Фиксацию после каждых 10 Поставщиков или так, или возможно даже в конце Ваших 1 000 Поставщиков!