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

som*_*son 16 nhibernate transactions

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

如果我执行以下操作:

using (var transaction = session.BeginTransaction())
{
    // do something
    transaction.Commit();
}
Run Code Online (Sandbox Code Playgroud)

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

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

Jam*_*Ide 14

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

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

  • 第一个代码示例可以正常使用,如果提交失败,将回滚事务. (2认同)