В прошлом я использовал TransactionScope с настольными клиентскими приложениями для отката неполной многоступенчатой транзакции. Такой подход вряд ли будет работать в веб-приложении.
Может ли кто-нибудь предложить способы, с помощью которых можно гарантировать откат нескольких шагов на нескольких страницах, если весь процесс не будет завершен? (например, их браузер дает сбой или они закрывают браузер в середине процесса)
Конечно, я мог бы написать в какую-то временную таблицу, а затем передать последнюю запись в реальную таблицу за одну транзакцию, но это чревато условий гонки. Я хочу начать транзакцию, обслужить несколько страниц, каждая страница записывает часть транзакции в таблицу (таблицы), затем завершает транзакцию с фиксацией, и если транзакция не завершена, она откатывается, когда сессия заканчивается.
Или я не правильно думаю? Предложения?
Поскольку я использую MVC 3, EF 4.1 и Ninject,Я не уверен, как это повлияет на решение, но подумал, что включу эту информацию.