Откат ранее совершенной транзакции - PullRequest
4 голосов
/ 07 октября 2011

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

  1. Запрашиваемый запрос должен быть зарегистрирован в базе данных (с использованием метода Register());и
  2. Запрос должен быть отправлен на внешний веб-сервис для дальнейшей обработки (с использованием метода Dispatch()).

Учитывая, что я не могу переключитьв порядке операций, я хотел бы иметь возможность «откатить» первую, если что-то пойдет не так со второй, чтобы затем недействительная запись не вставлялась в BD.Проблема здесь в том, что, конечно, я совершаю транзакцию внутри метода Register.Можно ли как-нибудь откатить его изнутри метода Dispatch, если что-то пойдет не так?

Редактировать: Все транзакции управляются со стороны .NET.

1 Ответ

2 голосов
/ 07 октября 2011

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

...