我使用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项将不会被提交,如果是,那么我该如何处理呢?
先谢谢
答案 0 :(得分:0)
由于foreach
循环位于事务内部,如果一个项目在中间失败,则没有人会到达数据库。所以不需要特殊处理。