NHibernate:单个事务上的多个提交

时间:2014-01-03 00:09:08

标签: c# nhibernate transactions

我想迭代一组对象并进行更改,然后在组中提交这些更改,因为数据量可能非常大。当我这样做时,我得到一个ObjectDisposedException。有关如何更好地处理这个问题的任何建议吗?

using (ITransaction tx = Session.BeginTransaction())
{
    for (int i = 0; i < 100; i++)
    {
        //DO Something
        if (i % 10 == 0)
        {
            tx.Commit();
        }
    }
}

1 个答案:

答案 0 :(得分:3)

您正在循环中提交事务,这意味着您尝试多次提交一个打开的事务。这在设计上是不可能的。一个事务只能提交一次。

所以你的两个选择是,围绕循环有一个事务

每个循环

或一个事务。当然,您仍然可以每x个对象批量更改一次,但每批次您必须打开一个新事务并提交更改,然后打开另一个等等...