transaction.Rollback()
以下是我的代码的代表性片段,其中在语句中抛出了一个意外的(至少就我而言)异常。
异常是类型NHibernate.TransactionException
,消息是“事务未连接,或已断开连接”。堆栈跟踪如下所示NHibernate.Transaction.AdoTransaction.CheckNotZombied() at NHibernate.Transaction.AdoTransaction.Rollback()
:
IEmployeeService employeeService = new EmployeeService(session);
var people = ReadFromFile('c:\temp.csv');
for (var person in people)
{
ITransaction transaction = session.BeginTransaction();
try
{
employeeService.Update(person);
employeeService.CheckForRecursion();
transaction.Commit();
}
catch(Exception exp)
{
if (!transaction.WasRolledBack)
transaction.Rollback();
}
}
CheckForRecursion 使用一些 SQL 来查找上次更新引入的任何递归,如果是这样我想撤消。当引入递归时,SQL 会冒出一个异常,这是正确的,我抓住它并尝试回滚。那是我遇到错误的时候。
我已将回滚包装在 try catch 中,因此整个事情可以继续进行,但我在 for 循环的每次后续迭代中都看到相同的异常。
想法?这个模式正确吗?