Многоэтапная транзакция базы данных, разделенная на несколько HTTP-запросов

В прошлом я использовал TransactionScope с настольными клиентскими приложениями для отката неполной многоступенчатой ​​транзакции. Такой подход вряд ли будет работать в веб-приложении.

Может ли кто-нибудь предложить способы, с помощью которых можно гарантировать откат нескольких шагов на нескольких страницах, если весь процесс не будет завершен? (например, их браузер дает сбой или они закрывают браузер в середине процесса)

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

Или я не правильно думаю? Предложения?

Поскольку я использую MVC 3, EF 4.1 и Ninject,Я не уверен, как это повлияет на решение, но подумал, что включу эту информацию.

6
задан Erik Funkenbusch 12 August 2011 в 13:28
поделиться