过去,我使用TransactionScope和桌面客户端应用程序来回滚不完整的多步事务。这种方法似乎不太可能在Web应用程序中起作用。跨多个HTTP请求的多步数据库事务拆分
任何人都可以建议如何确保多个步骤,跨几个页面,如果整个过程未完成可以确保回滚? (他们的浏览器崩溃或者关闭浏览器在中间过程为例)
当然,我会写信给某种形式的临时表,然后在一个事务中的最后记录转移到真正的表,但是执行竞争条件的风险。我想开始一个事务,提供多个页面,每个页面将一部分事务写入表格,然后用一个提交完成事务,并且如果事务没有完成,那么当事务被回滚时会话结束。
或者我不是在想正确的方法?建议?由于我使用的是MVC 3,EF 4.1和Ninject,我不确定这将如何影响解决方案,但我想我会包含这些信息。
这意味着你必须手动处理并发。这对我来说似乎是一种代码味道。 –
在Web应用程序中手动处理并发性非常普遍。数据库事务应尽可能短 - 在大多数常见情况下,小数秒。你想做什么意思数分钟数据库密集型锁定=您的应用程序将执行糟透了。 –