我们正在使用Enterprise Library进行数据访问。
我们的一个方法对同一个表有一个删除然后插入。这给了一个僵局。
如果我们将这些放在事务范围内,则不再发生死锁。
直观地说,感觉它应该是相反的方式。任何人都可以解释为什么它会这样吗?
答案 0 :(得分:-2)
与TransactionOptions
IsolationLevel = IsolationLevel.ReadUncommitted
结合的事务范围等同于T-SQL中的WITH(NOLOCK),因此如果表未锁定,则不会发生死锁...
using (var scope = new TransactionScope(TransactionScopeOption.Required, new TransactionOptions(){ IsolationLevel = IsolationLevel.ReadUncommitted }))
{
}