如何使用NHibernate的无状态会话处理大量数据操作的异常

时间:2014-11-10 10:58:03

标签: c# nhibernate

我使用NHibernate的无状态会话开发了以下用于批量数据操作的代码。

var testObjects = CreateTestObjects(500000);
        var stopwatch = new Stopwatch();
        stopwatch.Start();
        using (ITransaction transaction = Session.BeginTransaction())
        {
            foreach (var testObject in testObjects)
            {
                Session.Save(testObject);
            }
            transaction.Commit();
        }
        stopwatch.Stop();
        var time = stopwatch.Elapsed;

现在我的问题是假设我的testObjects中有10个项目,第5个没有项目包含错误的模式或任何其他异常,那么我该如何处理此事务我的意思是说5个项目已经提交,之后异常发生,那么由于交易失败,其他5项将不会被提交,如果是,那么我该如何处理呢?

先谢谢

1 个答案:

答案 0 :(得分:0)

由于foreach循环位于事务内部,如果一个项目在中间失败,则没有人会到达数据库。所以不需要特殊处理。