Вставка коллекции объектов навалом с использованием Fluent NHibernate - программирование
Подтвердить что ты не робот

Вставка коллекции объектов навалом с использованием Fluent NHibernate

Я пытаюсь вставить большую коллекцию объектов в таблицу, используя беглый NHibernate, используя вызов для сохранения или обновления передачи каждого объекта из коллекции в цикле foreach. Я установил размер партии в размере коллекции, однако я прочитал в блоге Айенде, что настройка его на большие значения не рекомендуется, поэтому я закрыл его на уровне 250, однако, когда я просматриваю коллекцию в NHProf, я см. поток операторов вставки (коллекция составляет около 20000 элементов), а не набор пакетных вызовов вставки.

Это кажется очень неэффективным и занимает гораздо больше времени, чем я ожидал бы от запроса, который является очень простым по сути - вставка значения в 25 столбцов (да, это одно место, это может быть сделано лучше, но это устаревшую базу данных, за которой я застрял) в базу данных SQL Server 2008, поэтому я могу только предположить, что я делаю это неправильно.

Есть ли рекомендуемый способ вставки больших коллекций объектов с использованием NHibernate? Можно ли повысить эффективность при использовании Save over SaveOrUpdate?

Код метода добавления - вызов SetBatchSize - это то, где пакет закрыт до 250 или задан размер коллекции, если он меньше 250:

public void Add(IEnumerable<TEntity> entities)
{
    var session = GetCurrentSession();
    using (var transaction = session.BeginTransaction())
    {
        entities = entities.ToList();

        session.SetBatchSize(SetBatchSize(entities.Count()));

        foreach (var entity in entities)
            session.SaveOrUpdate(entity);

        transaction.Commit();
    }
}

Извиняюсь за слегка расплывчатый вопрос, у меня такое чувство, что я просто приближаюсь к вещам неправильно, и любые указатели будут очень благодарны!

4b9b3361