Порядок отката .NET TransactionScope - PullRequest
1 голос
/ 13 октября 2009

Очевидно (поскольку в документации не сказано ни слова об этом), в транзакции .NET (с использованием TransactionScope) откаты выполняются в том же порядке, что и коммиты, и в том же порядке, что и регистрации были сделаны.

По логике, откат должен быть в обратном порядке: Если последовательность действий «do A», затем «do B», моя последовательность отката должна быть «отменить B», затем «отменить A». Но благодаря TransactionScope это не так, это всегда «отменить A», а затем «отменить B».

Я пропустил вариант или умру с этим странным порядком? :)

1 Ответ

0 голосов
/ 13 октября 2009

Согласно Microsoft, если ваша область транзакции выходит из области действия (то есть, если вы выкидываете исключение из области действия транзакции) до выполнения метода Complete (), транзакция в этой области должна немедленно откатываться.

Из этого следует, что, если вы хотите, чтобы ваши транзакции откатывались в обратном порядке, вы должны вкладывать их . См. Следующую статью для получения дополнительной информации:

Реализация неявной транзакции с использованием объема транзакции
http://msdn.microsoft.com/en-us/library/ms172152.aspx

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