最近我的团队在asp.net c#上完成了一个项目。它是将功能添加到现有项目中,由其他公司完成。
它是一个购物车。当用户在非常罕见的情况下下订单时,我们遇到死锁情况,并且数据库连接完全丢失,这是通过entripise库建立的
错误:事务(进程ID 89)在锁资源上死锁 与另一个进程并被选为死锁受害者。重新运行 交易。
所以我们搜索了死锁发生的各种原因,最后我们才知道死锁的确切原因
原因:
DBWrapper wrapper = new DBWrapper(true,System.Data.IsolationLevel.RepeatableRead);
使用 IsolationLevel.RepeatableRead 导致死锁问题。
所以我对sql中的Locks概念知之甚少。
预期的诽谤:
1)计划是将隔离级别更改为与 IsolationLevel.RepeatableRead 类似的行为,并防止出现死锁。
2)或者在代码中保持相同的隔离级别并使用任何锁进行sql查询 概念并使其成功运作。
请将此作为我们的首要问题......我们将非常感谢您的想法。
请建议我为我预期的解决方案做些什么。