NOLOCK с Linq to SQL без установки Transaction IsolationLevel - PullRequest
3 голосов
/ 23 сентября 2011

Есть ли способ использовать NOLOCK для одного запроса LIN2SQL без установки Transaction IsolationLevel? Мне нужно сделать это как часть запроса для более крупной (распределенной) транзакции.

Например:

using (var txn = new TransactionScope())
{

    // query1
    // query2
    // query3
}

Я хочу, чтобы изменения запроса 1 и 3 были транзакционными, но мне нужен NOLOCK для запроса 2, который находится на отдельной базе данных по сравнению с другими запросами. Если я переустановил область транзакции для query2 на ReadUncommitted, то получу ошибку:

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

Ответы [ 2 ]

3 голосов
/ 23 сентября 2011

Будет ли у вас работать?

 using (var txn = new TransactionScope())
 {

    // query1
     using (TransactionScope txn2 = 
     new TransactionScope(TransactionScopeOption.RequiresNew),
     new TransactionOptions() {//isolation level,timeout, etc}
     )
     {
    // query2
      }
    // query3
  }
0 голосов
/ 23 сентября 2011

Как насчет того, чтобы сделать query2 хранимой процедурой с nolock в sql и вызвать ее из Linq2Sql?

...