使用 Linq to SQL 进行 NOLOCK,无需设置事务隔离级别
有没有办法在 LIN2SQL 单个查询上使用 NOLOCK 而不设置事务隔离级别?我需要将其作为较大(分布式)事务的查询部分来执行。
例如:
using (var txn = new TransactionScope())
{
// query1
// query2
// query3
}
我希望查询 1 和 3 的更改是事务性的,但我需要对查询 2 进行 NOLOCK,该查询恰好位于与其他查询不同的数据库上。如果我将 query2 的事务范围重新设置为 ReadUncomfilled,则会收到错误:
为 TransactionScope 指定的事务具有与范围请求的值不同的 IsolationLevel。 参数名称:transactionOptions.IsolationLevel
Is there a way to use NOLOCK on a LIN2SQL single query without setting the Transaction IsolationLevel? I need to do this as the query part of a larger (distributed) transaction.
For example:
using (var txn = new TransactionScope())
{
// query1
// query2
// query3
}
I want the changes of query 1 and 3 to be transactional, but I need NOLOCK on query2, which happens to be on a separate db to the other queries. If I re-set the transaction scope for query2 to ReadUncommitted then I get the error:
The transaction specified for TransactionScope has a different IsolationLevel than the value requested for the scope.
Parameter name: transactionOptions.IsolationLevel
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
它对你有用吗?
Will it work for you?
如何使 query2 成为一个存储过程,在 sql 中使用 nolock,然后从 Linq2Sql 调用它?
How about making query2 a stored procedure, with nolock in the sql, and calling that from Linq2Sql?