2010-01-22 88 views
3

我正在使用NHibernate Profiler查看配料是否真的發生。代碼看起來像這樣Fluent NHibernate SetBatchSize方法

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

事件探查器仍然給我錯誤「大量的個人寫入」。

BTW進出口使用功能NHibernate

日Thnx

回答

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

我想通了。問題在於IdentityGenerator。它被設置爲AutoIdentity(SQL Server)。只要我將它改爲HiLo,它就開始工作。 – 2013-03-13 13:08:37

1

我想通了。問題在於IdentityGenerator。它被設置爲AutoIdentity(SQL Server)。只要我將它改爲HiLo,它就開始工作。