我的代码试图执行以下操作并导致锁定问题,因为它试图提交的事务是针对大量数据项的。如何最好地使用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选项? –