有没有办法在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
答案 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调用它?