Свободный метод NHibernate SetBatchSize - PullRequest
3 голосов
/ 22 января 2010

Я использую NHibernate Profiler, чтобы увидеть, действительно ли происходит пакетирование. Код выглядит так

Session.NHibernateSession.SetBatchSize(data.Items.Count); 
    foreach (var o in data.Items) 
    { 
        //something else... 
        base.Save(o); 
    } 
    Session.NHibernateSession.SetBatchSize(0); 

Профилировщик по-прежнему выдает ошибку «Большое количество отдельных записей».

Кстати, я использую Fluent Nhibernate

Thnx

Ответы [ 2 ]

2 голосов
/ 22 января 2010

Мне не нравится оставлять такие вещи, как размер пакета на волю случая, поэтому я проверяю, что я пакетирую все, когда сохраняю внутри явной транзакции, и это, кажется, помогает мне.

Session.NHibernateSession.SetBatchSize(data.Items.Count); 
Session.NHibernateSession.FlushMode = FlushMode.Commit;
using (var tx = Session.NHibernateSession.BeginTransaction())
{
  foreach (var o in data.Items) 
  { 
      //something else... 
      base.Save(o); 
  }
  tx.Commit();
}
Session.NHibernateSession.SetBatchSize(0); 
1 голос
/ 13 марта 2013

Я понял это. Проблема была в IdentityGenerator. Это было установлено в AutoIdentity (SQL Server). Как только я сменил его на HiLo, он начал работать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...