如何解决使用企业库时的事务作用域和死锁
| 我们正在使用企业库进行数据访问。 我们的方法之一是对同一张表进行删除,然后进行插入。这会造成僵局。 如果将它们放在事务范围内,则不再发生死锁。 凭直觉,感觉应该相反。谁能解释为什么它如此工作?解决方法
事务范围与
TransactionOptions
IsolationLevel = IsolationLevel.ReadUncommitted
的组合相当于T-SQL中的WITH(NOLOCK),因此,如果未锁定表,则不会发生死锁...
using (var scope = new TransactionScope(TransactionScopeOption.Required,new TransactionOptions(){ IsolationLevel = IsolationLevel.ReadUncommitted }))
{
}