我正在尝试处理我们的应用程序中是否存在使用不正确 IsolationLevels 进行数据库连接的问题。我们的应用程序是一个使用 SQL Server 2005 的 .Net 3.5 数据库应用程序。
我发现连接的 IsolationLevel 在返回到连接池时不会重置(请参见此处),并且在此博客文章中读到每个新创建的 TransactionScope 都分配给它自己的连接池,这让我感到非常惊讶。
我们的数据库更新(通过我们的业务对象)发生在 TransactionScope 内(为每个业务对象图更新创建一个新的)。但是我们的提取不使用显式事务。所以我想知道的是,我们是否会遇到这样的情况:我们的 fetch 操作(应该使用默认的 IsolationLevel - Read Committed)会重用池中已用于更新的连接,并继承更新 IsolationLevel (可重复读取)?或者我们的更新是否可以保证使用不同的连接池,因为它们被包装在 TransactionScope 中?
提前致谢,
格雷厄姆