我想在快照隔离模式下运行一个特定的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 任何地方,我必须使用无处不在。
是这样吗,还是我错过了什么?