Nhibernate session.BeginTransaction自动回滚使用中的异常

时间:2011-06-16 19:24:24

标签: nhibernate transactions

对不起长的主题名称...

如果我执行以下操作:

using (var transaction = session.BeginTransaction())
{
    // do something
    transaction.Commit();
}

如果我的做某事导致异常,它会自动回滚,还是我需要明确检查如下:

using (var transaction = session.BeginTransaction())
{
    try
    {
        // do something
        transaction.Commit();
    }
    catch (Exception)
    {
        transaction.Rollback();
    }
}

1 个答案:

答案 0 :(得分:14)

如果提交在使用块中失败,可以安全地回滚事务。

ITransaction在幕后包装ADO.NET事务,因此它取决于提供者特定的实现。我检查的源代码中的Dispose方法(2.1)假定在内部Dispose上调用IDbTransaction将其回滚。