TransactionScope的当前实现缺乏在嵌套范围内更改 IsolationLevels 的能力。
MSDN声明:当使用嵌套的 TransactionScope 对象时,所有嵌套的范围必须配置为使用完全相同的隔离级别,如果它们想要加入环境事务。如果嵌套的 TransactionScope 对象尝试加入环境事务但它指定了不同的隔离级别,则会引发ArgumentException。
但是 SQL Server 允许我们随时更改隔离级别,为什么 TransactionScope 不允许?我不明白。
BCL 中是否有任何关于嵌套 SQL 事务及其隔离级别的标准来禁止这种行为。我有哪些选择?我当然不能仅仅为了它们可以使用而设计类库并与它们一起提升隔离级别。
如果方法A()想要一个快照级别并调用想要读取已提交级别的方法 B()。方法A()在我开发的 LibraryA 中,方法B()在由一家虚构公司开发的 LibraryB 中。A()如何在不获取ArgumentException的情况下调用B()?