Делает ли Nhibernate session.BeginTransaction автоматический откат на исключение в рамках использования - PullRequest
16 голосов
/ 16 июня 2011

Хорошо, извините за длинное имя субъекта ...

Если я сделаю следующее:

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

Если мои что-то делают , вызвало исключение, произойдет ли автоматический откат, или мне нужно явно проверить это, как показано ниже:

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

1 Ответ

14 голосов
/ 16 июня 2011

Это безопасное предположение о том, что транзакция будет откатана, если в операционном блоке с ошибкой произойдет сбой.

ITransaction оборачивает транзакцию ADO.NET за кулисами, поэтому она зависит от конкретной реализации поставщика.,Метод Dispose в проверенном исходном коде (2.1) предполагает, что вызов Dispose для внутреннего IDbTransaction откатывает его.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...