我正在使用C#3.5并且我在事务范围内有一个锁定表的代码,如何防止事务范围锁定这些表?
谢谢,
答案 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存储过程。