交易范围锁定表

时间:2014-12-22 08:27:03

标签: c# sql transactionscope

我正在使用C#3.5并且我在事务范围内有一个锁定表的代码,如何防止事务范围锁定这些表?

谢谢,

4 个答案:

答案 0 :(得分:2)

使用选项TransactionScope添加RequireNew并将IsolationLevel设置为ReadUncommitted

using (var t = new TransactionScope(TransactionScopeOption.RequireNew,
new TransactionOptions { 
    IsolationLevel = IsolationLevel.ReadUncommitted 
}))
{
    // your code
}

答案 1 :(得分:2)

TransactionScope使代码块成为事务性的。在“代码”不是COMMITED/ROLLED BACK时,已锁定的表被锁定。

答案 2 :(得分:1)

你应该使用关键字来阻止表锁定,比如nolock,但要注意你如何读取它们,例如read committed或read uncommited,因为这可能会让你得到所谓的脏读。

答案 3 :(得分:0)

我通过添加

解决了这个问题

with(nolock)

到事务中涉及的SQL存储过程。