【发布时间】:2010-08-24 14:21:37
【问题描述】:
TransactionScope 的当前实现缺乏在嵌套范围内更改 IsolationLevels 的能力。
MSDN 声明:当使用嵌套的 TransactionScope 对象时,所有嵌套的范围必须配置为使用完全相同的隔离级别才能加入环境事务。如果嵌套的 TransactionScope 对象尝试加入环境事务但它指定了不同的隔离级别,则会抛出 ArgumentException。
但是 SQL Server 允许我们随时更改隔离级别,为什么 TransactionScope 不允许?没看懂。
BCL 中是否有任何关于嵌套 SQL 事务及其隔离级别的标准来禁止这种行为。我有哪些选择?我当然不能仅仅为了它们可以使用而设计类库并与它们一起提升隔离级别。
如果方法 A() 想要一个 Snapshot 级别并调用想要 Read Committed 级别的方法 B()。 A() 方法在我开发的 LibraryA 中,B() 方法在由一家虚构公司开发的 LibraryB 中。 A() 如何调用 B() 而不会得到 ArgumentException?
【问题讨论】:
标签: .net ado.net transactionscope system.transactions