使用企业库时的Transactionscope和死锁

时间:2011-04-13 05:42:47

标签: c# enterprise-library deadlock transactionscope

我们正在使用Enterprise Library进行数据访问。

我们的一个方法对同一个表有一个删除然后插入。这给了一个僵局。

如果我们将这些放在事务范围内,则不再发生死锁。

直观地说,感觉它应该是相反的方式。任何人都可以解释为什么它会这样吗?

1 个答案:

答案 0 :(得分:-2)

TransactionOptions IsolationLevel = IsolationLevel.ReadUncommitted结合的事务范围等同于T-SQL中的WITH(NOLOCK),因此如果表未锁定,则不会发生死锁...

using (var scope = new TransactionScope(TransactionScopeOption.Required, new TransactionOptions(){ IsolationLevel = IsolationLevel.ReadUncommitted }))
{
}