使用Linq to SQL NOLOCK而不设置Transaction IsolationLevel

时间:2011-09-23 14:03:33

标签: linq-to-sql transactionscope

有没有办法在LIN2SQL单个查询中使用NOLOCK而不设置事务隔离级别?我需要将此作为较大(分布式)事务的查询部分。

例如:

using (var txn = new TransactionScope())
{

    // query1
    // query2
    // query3
}

我希望查询1和3的更改是事务性的,但我需要在query2上使用NOLOCK,它恰好位于与其他查询分开的数据库中。如果我将query2的事务范围重新设置为ReadUncommitted,那么我得到错误:

The transaction specified for TransactionScope has a different IsolationLevel than the value requested for the scope. Parameter name: transactionOptions.IsolationLevel

2 个答案:

答案 0 :(得分:3)

它会对你有用吗?

 using (var txn = new TransactionScope())
 {

    // query1
     using (TransactionScope txn2 = 
     new TransactionScope(TransactionScopeOption.RequiresNew),
     new TransactionOptions() {//isolation level,timeout, etc}
     )
     {
    // query2
      }
    // query3
  }

答案 1 :(得分:0)

如何将query2作为存储过程,在sql中使用nolock,并从Linq2Sql调用它?