C# 跨多个HTTP请求拆分多步骤数据库事务
我过去曾在桌面客户端应用程序中使用TransactionScope回滚不完整的多步骤事务。这种方法似乎不太可能在Web应用程序中工作 如果整个过程没有完成,有谁能提出一些方法来确保跨多个页面的多个步骤回滚?(例如,他们的浏览器崩溃或中途关闭浏览器) 当然,我可以写入某种类型的临时表,然后在一个事务中将最终记录传输到实际表中,但这会带来竞争条件的风险。我想开始一个事务,提供几个页面,每个页面将事务的一部分写入表中,然后通过提交完成事务,如果事务未完成,则在会话结束时回滚 还是我的想法不对?建议C# 跨多个HTTP请求拆分多步骤数据库事务,c#,asp.net-mvc,transactions,entity-framework-4.1,ninject,C#,Asp.net Mvc,Transactions,Entity Framework 4.1,Ninject,我过去曾在桌面客户端应用程序中使用TransactionScope回滚不完整的多步骤事务。这种方法似乎不太可能在Web应用程序中工作 如果整个过程没有完成,有谁能提出一些方法来确保跨多个页面的多个步骤回滚?(例如,他们的浏览器崩溃或中途关闭浏览器) 当然,我可以写入某种类型的临时表,然后在一个事务中将最终记录传输到实际表中,但这会带来竞争条件的风险。我想开始一个事务,提供几个页面,每个页面将事务的一部分写入表中,然后通过提交完成事务,如果事务未完成,则在会话结束时回滚 还是我的想法不对?建议 由
由于我使用的是MVC 3、EF 4.1和Ninject,我不确定这会对解决方案产生什么影响,但我想我应该包括这些信息。您可以考虑设置nservicebus或masstransit,并使用他们的saga设备 在多个页面中没有数据库事务/
TransactionScope
。即使试图做那样的事也大错特错
解决此问题有两种选择:
- 使用
仅当用户完成所有步骤并确认保存后,才将数据存储在会话中并将其持久化到数据库中。这绝对是您所需要的。]会话