Transacción de base de datos de varios pasos dividida en múltiples solicitudes HTTP

He usado TransactionScope en el pasado con aplicaciones cliente de escritorio para revertir una transacción incompleta de varios pasos. Parece poco probable que ese enfoque funcione en una aplicación web.

¿Alguien puede sugerir formas en las que se puede garantizar que varios pasos, en varias páginas, se reviertan si no se completa todo el proceso? (su navegador falla o cierran el navegador a mitad del proceso, por ejemplo)

Ciertamente, podría escribir en una tabla temporal de algún tipo, luego transferir el registro final a la tabla real en una sola transacción, pero eso corre el riesgo de condiciones de carrera. Me gustaría comenzar una transacción, servir varias páginas, cada página escribiendo una parte de la transacción en la (s) tabla (s), luego completar la transacción con una confirmación, y si la transacción no se completa, se revierte cuando la sesión termina.

¿O no estoy pensando de la manera correcta? ¿Sugerencias?

Dado que estoy usando MVC 3, EF 4.1 y Ninject, no estoy seguro de cómo eso afectará la solución, pero pensé que incluiría esa información.

Respuestas a la pregunta(2)

Su respuesta a la pregunta