开发者

Fluent NHibernate SetBatchSize method

开发者 https://www.devze.com 2022-12-17 13:54 出处:网络
I\'m using NHibernate Profiler to see if batching really occurs. Code looks like this Session.NHibernateSession.SetBatchSize(data.Items.Count);

I'm using NHibernate Profiler to see if batching really occurs. Code looks like this

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

Profiler still gives me error "Large number of individual writes".

BTW Im usin开发者_运维百科g Fluent Nhibernate

Thnx


I dislike leaving things like batch size to chance so I make sure I batch everything when saving inside an explicit transaction and it seems to do the trick for me.

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); 


I figured it out. Problem was in IdentityGenerator. It was set to AutoIdentity (SQL Server). As soon as I changed it to HiLo it started working.

0

精彩评论

暂无评论...
验证码 换一张
取 消