我的代碼試圖執行以下操作並導致鎖定問題,因爲它試圖提交的事務是針對大量數據項的。如何最好地使用NHibernate的BeginTransaction是一個循環?
using(var session = sManager.OpenSession())
{
using (var trans = session.BeginTransaction())
{
var rows = 0;
foreach (var idsChunk in total.Chunk(500))
{
.... <Execute Update>
}
trans.Commit();
}
}
大約有500K條記錄,上面的代碼鎖定了底層表的大部分時間。想知道在BeginTransation之外移動foreach是否會導致其他問題? 你能否建議適當的方式來使用這個?
您是否嘗試過試驗NHibernate的配料和FlushMode選項? –