使用可重复读取隔离级别sql时死锁

时间:2015-04-29 09:36:09

标签: c# sql

最近我的团队在asp.net c#上完成了一个项目。它是将功能添加到现有项目中,由其他公司完成。

它是一个购物车。当用户在非常罕见的情况下下订单时,我们遇到死锁情况,并且数据库连接完全丢失,这是通过entripise库建立的

  

错误:事务(进程ID 89)在锁资源上死锁   与另一个进程并被选为死锁受害者。重新运行   交易。

所以我们搜索了死锁发生的各种原因,最后我们才知道死锁的确切原因

原因:

DBWrapper wrapper = new DBWrapper(true,System.Data.IsolationLevel.RepeatableRead);

使用 IsolationLevel.RepeatableRead 导致死锁问题。

所以我对sql中的Locks概念知之甚少。

预期的诽谤:

1)计划是将隔离级别更改为与 IsolationLevel.RepeatableRead 类似的行为,并防止出现死锁。

2)或者在代码中保持相同的隔离级别并使用任何锁进行sql查询 概念并使其成功运作。

请将此作为我们的首要问题......我们将非常感谢您的想法。

请建议我为我预期的解决方案做些什么。

0 个答案:

没有答案