我想迭代一组对象并进行更改,然后在组中提交这些更改,因为数据量可能非常大。当我这样做时,我得到一个ObjectDisposedException。有关如何更好地处理这个问题的任何建议吗?
using (ITransaction tx = Session.BeginTransaction())
{
for (int i = 0; i < 100; i++)
{
//DO Something
if (i % 10 == 0)
{
tx.Commit();
}
}
}
答案 0 :(得分:3)
您正在循环中提交事务,这意味着您尝试多次提交一个打开的事务。这在设计上是不可能的。一个事务只能提交一次。
所以你的两个选择是,围绕循环有一个事务
每个循环或一个事务。当然,您仍然可以每x个对象批量更改一次,但每批次您必须打开一个新事务并提交更改,然后打开另一个等等...