我想在快照隔离模式下运行一个特定的 Linq2Sql 查询,而不影响我的应用程序的其余部分。
但是,每当我使用类似的代码时
using (var t = new TransactionScope(TransactionScopeOption.Required,
new TransactionOptions { IsolationLevel = IsolationLevel.Snapshot }))
{
...
}
transactionScope 完成后,数据库仍在使用快照隔离。
我可以添加一个假人来重置隔离模式,如下所示
using (var t = new TransactionScope(TransactionScopeOption.Required,
new TransactionOptions { IsolationLevel = IsolationLevel.ReadCommitted }))
{
...
}
但这并不能解决其他线程在两次之间启动的任何查询也将在快照隔离中运行的问题。
看起来,如果我想在程序中的任何地方引入 TransactionScope ,我必须在任何地方都使用它。
是这样吗,还是我错过了什么?