有没有办法在没有设置事务隔离级别的LIN2SQL单一查询上使用NOLOCK?我需要将它作为更大(分布式)事务的查询部分。与LINQ到NOLOCK NOLOCK没有设置事务隔离级别
例如:
using (var txn = new TransactionScope())
{
// query1
// query2
// query3
}
我想要查询1和3的变化是事务性的,但我需要NOLOCK上QUERY2,这恰好是在一个单独的分贝到另一查询。如果我重新设置QUERY2到READUNCOMMITTED事务范围,然后我得到的错误:
The transaction specified for TransactionScope has a different IsolationLevel than the value requested for the scope. Parameter name: transactionOptions.IsolationLevel
尽管没有解释,但实际上这是个问题。问题是使用环境事务时无法更改IsolationLevel。通过指定RequiresNew,您不会“加入”外部事务并尝试更改它的IsolationLevel。相反,它会使用自己的IsolationLevel(ReadUncommitted)创建一个新事务。 – CodeNaked