我们将隔离级别设置为“读未提交”,如下所示。
连接被返回到池中后,问题在于它不会被重置回默认的隔离级别,我理解这是设计上的问题(当您重用连接池中的连接时,事务隔离级别不会被重置)。因此,当事务完成后,从池中重用该连接的任何内容都将使用Read Uncommitted隔离级别运行。
我尝试使用SqlCommand调用“SET TRANSACTION ISOLATION LEVEL READ COMMITTED”,但无法保证它将重用来自池的相同连接。在
有没有办法在不显式设置所有与数据库的通话时重置隔离级别的情况下重置隔离级别,以防此代码之前已运行?
TransactionOptions to = new TransactionOptions();
to.IsolationLevel = System.Transactions.IsolationLevel.ReadUncommitted;
using (TransactionScope transaction = new TransactionScope(TransactionScopeOption.RequiresNew, to))
{
// Do Stuff
transaction.Complete();
}
连接被返回到池中后,问题在于它不会被重置回默认的隔离级别,我理解这是设计上的问题(当您重用连接池中的连接时,事务隔离级别不会被重置)。因此,当事务完成后,从池中重用该连接的任何内容都将使用Read Uncommitted隔离级别运行。
我尝试使用SqlCommand调用“SET TRANSACTION ISOLATION LEVEL READ COMMITTED”,但无法保证它将重用来自池的相同连接。在
// Do Stuff
中没有任何东西暴露底层连接。有没有办法在不显式设置所有与数据库的通话时重置隔离级别的情况下重置隔离级别,以防此代码之前已运行?