Пакетное сохранение в CastleProject ActiveRecord - PullRequest
1 голос
/ 19 марта 2010

Мне нужно сохранить тысячи записей в базе данных. Я использую CastleProject ActiveRecord. Цикл, в котором хранится такое количество объектов, работает слишком долго.

Можно ли запустить сохранение в пакете с помощью ActiveRecord? Каков рекомендуемый способ повышения производительности?

Ответы [ 3 ]

1 голос
/ 19 марта 2010

Кажется, я нашел решение. Есть два основных шага:

  1. Добавить пакет в файл конфигурации:
  2. Используйте TransactionScope для сохранения ваших объектов:

using (TransactionScope scope = new TransactionScope())
{
  for (int i = 0; i < 100; i++)
  {
    Contact contact = new Contact();
    contact.Save();
  }
}
0 голосов
/ 21 марта 2010

Я согласен с Патриком. Просто хотел упомянуть решение среднего уровня: сеанс без сохранения состояния. См:

0 голосов
/ 19 марта 2010

ActiveRecord (и большинство ORM) не подходят для пакетных операций.Поскольку все отслеживание изменений происходит внутри ORM, это может реально замедлить вас.

Для максимальной производительности я бы обратился либо к прямому ADO.NET, либо к какому-либо массовому импорту SQL.

...