流畅的NHibernate SetBatchSize方法

时间:2010-01-22 08:07:37

标签: nhibernate fluent-nhibernate

我正在使用NHibernate Profiler来查看是否真的发生了批处理。代码看起来像这样

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

Profiler仍然给我错误“大量个人写入”。

BTW Im使用Fluent Nhibernate

日Thnx

2 个答案:

答案 0 :(得分:2)

我不喜欢将批量大小等事情留给机会,因此我确保在保存在显式事务中时批量处理所有内容并且它似乎对我有用。

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 :(得分:1)

我明白了。问题出在IdentityGenerator中。它被设置为AutoIdentity(SQL Server)。我一改为HiLo就开始工作了。