Age*_*ire 7 asp.net-mvc transactions transactionscope httpwebrequest asp.net-mvc-4
我需要在它处理的每个Web请求中成为我的整个应用程序事务.
我需要启动事务,如果控制器中没有异常,则提交它.否则,回滚.
到目前为止,我有以下实现:
OnActionExecuted方法,我提交它或不提交它.以下是我使用的技术列表:
现在,我想知道的是死锁怎么样?当两个Web请求同时处理时会发生什么,此外它们将获得使用两个存储库(与其DataContext实例链接)的权利,这意味着数据库中有两个表?
例如:一个请求最初想要读取表Table1,然后Table2,另一个请求想要使用Table2然后使用Table1.
我该怎么办?
好吧,我已经意识到这个问题的一些解决方案:
第一个是拥有所有表的列表并通过该列表访问它们。Table2因此,如果上下文需要两者,则之前永远不会访问示例Table1,并且不会发生死锁。
第二个是创建一个惰性 IO 系统,该系统跟踪所有必要的更改(例如添加项目、检索其 id 并在其他地方使用它)。但建造起来似乎相当困难。
另一种方法是在每个数据库请求开始时创建应用程序级锁,并在结束时释放它。该解决方案完全无死锁,但仅适用于低负载系统。
| 归档时间: |
|
| 查看次数: |
1178 次 |
| 最近记录: |