"Массовая вставка" для каскадного списка

У меня есть объект с каскадным списком, который отображается следующим образом:

HasMany(x => x.Products).Cascade.AllDeleteOrphan(); //.BatchSize(10000);

После добавления 20000 товаров в список фиксация занимает более 30 секунд (в то время как максимум 3 секунды).

Что мне нужно, это своего рода объемная вставка. Я мог бы придерживаться этого подхода: ускорить массовые операции вставки с помощью NHibernate. Я знаю, что это решение использует StatelessSession но в любом случае я надеюсь настроить эти вещи в моем отображении, добавив объекты непосредственно в список в моем Entity а также NHibernate заботится об остальном материале. Настройка BatchSize На отображение списка, похоже, не влияет.

Есть ли способ выполнить эту задачу в приемлемое время?

2 ответа

Я думаю, что размер пакета в отображении связан только с получением. Вы можете попробовать использовать эту конфигурацию в вашей конфигурации nhibernate:

<property name="adonet.batch_size">250</property>

Единственное, чтобы ускорить процесс - использовать сеанс без сохранения состояния.

(прочитайте это: вставки сеанса без сохранения состояния NHibernate идут медленно)

Кроме того, позаботьтесь о том, чтобы сделать это еще быстрее

cfg.AutoCommentSql = false;

cfg.LogFormattedSql = false;

Другие вопросы по тегам