Transação de banco de dados de várias etapas dividida em várias solicitações HTTP

Eu usei o TransactionScope no passado com aplicativos clientes de desktop para reverter uma transação de várias etapas incompleta. É improvável que essa abordagem funcione em um aplicativo Web.

Alguém pode sugerir maneiras pelas quais várias etapas, em várias páginas, podem ser revertidas se todo o processo não for concluído? (o navegador trava ou fecha o navegador no meio do processo, por exemplo)

Certamente, eu poderia escrever em uma tabela temporária de algum tipo e depois transferir o registro final para a tabela real em uma única transação, mas isso corre o risco de condições de corrida. Gostaria de iniciar uma transação, atender a várias páginas, cada página gravando uma parte da transação na (s) tabela (s), concluindo a transação com uma confirmação e, se a transação não for concluída, ela será revertida quando a sessão termina.

Ou não estou pensando da maneira certa? Sugestões?

Como estou usando MVC 3, EF 4.1 e Ninject, não sei como isso afetará a solução, mas pensei em incluir essas informaçõe

questionAnswers(2)

yourAnswerToTheQuestion