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