【发布时间】:2011-01-26 09:38:33
【问题描述】:
我正在尝试了解我们的应用程序中是否存在使用不正确 IsolationLevels 进行数据库连接的问题。我们的应用程序是使用 SQL Server 2005 的 .Net 3.5 数据库应用程序。
我发现连接的 IsolationLevel 在返回到连接池时不会重置(请参阅here),并且在此blog post 中读到每个新创建的 TransactionScope 都有自己的连接也很惊讶分配给它的池。
我们的数据库更新(通过我们的业务对象)发生在 TransactionScope 内(为每个业务对象图更新创建一个新的)。但是我们的提取不使用显式事务。所以我想知道的是,我们是否会遇到这样的情况:我们的 fetch 操作(应该使用默认的 IsolationLevel - Read Committed)会重用池中已用于更新的连接,并继承更新 IsolationLevel (可重复读取)?或者我们的更新是否可以保证使用不同的连接池,因为它们被包装在 TransactionScope 中?
提前致谢,
格雷厄姆
【问题讨论】:
标签: sql-server .net-3.5 connection-pooling transactionscope isolation-level