目前的 TransactionScope 实现缺乏在嵌套范围中更改隔离级别的能力。
MSDN 指出:当使用嵌套的 TransactionScope 对象时,如果它们想要加入环境事务,则所有嵌套的范围必须配置为使用完全相同的隔离级别。如果嵌套的 TransactionScope 对象尝试加入环境事务,但指定了不同的隔离级别,则会抛出 ArgumentException 异常。
然而,SQL Server 允许我们随时更改隔离级别,为什么 TransactionScope 不允许呢?我不明白。
在 BCL 中是否有关于嵌套 SQL 事务及其隔离级别的标准,禁止这种行为?我的选择是什么?我肯定不能设计类库并推广隔离级别,只是为了能够使用它们。
如果方法 A() 需要一个 快照 级别,并调用方法 B(),该方法需要 读取已提交 级别。 方法 A() 在由我开发的 LibraryA 中,方法 B() 在由虚构公司开发的 LibraryB 中。如何使 A() 调用 B() 而不会出现 ArgumentException?