的當前實現TransactionScope缺少在嵌套作用域中更改IsolationLevel的能力。具有不同IsolationLevel的內部TransactionScope,它如何實現?
MSDN states:當使用嵌套的TransactionScope對象時,如果想要加入環境事務,則必須將所有嵌套的作用域配置爲使用完全相同的隔離級別。如果嵌套的TransactionScope對象嘗試連接環境事務,但它指定了不同的隔離級別,則會引發一個ArgumentException。
但是,SQL Server允許我們隨時更改隔離級別,爲什麼TransactionScope不允許?我不明白。
BCL中是否存在關於嵌套SQL事務及其隔離級別的任何標準以禁止此行爲。我有什麼選擇?我當然不能設計類庫,只是爲了可以使用它們而提升隔離級別。
如果方法A()想要一個快照水平並調用希望讀已提交水平的方法B()。方法A()在我開發的LibraryA中,方法B()位於由虛構公司開發的LibraryB中。如何A()致電B()沒有得到ArgumentException?
感謝您的答覆。但我缺少的是爲什麼如果SQL Server允許更改事務的隔離級別,那麼框架會禁止它?有時候,你可能真的需要這個用於一些具有優化目的的子語句,而且我真的不想用自己的SQL語句來改變它的級別。 – 2010-08-25 06:54:42
@IvanZlatanov TransactionScope不限於與SQL Server一起使用,它可以允許跨進程/系統的分佈式事務。因此它比SQL Server允許的更嚴格,可能會簡化確保整個系統一致性的複雜性,而不是支持分佈式事務。 – AaronLS 2013-05-24 20:49:23
@AaronLS永遠不要這樣想。非常有意義。 – 2013-05-27 07:54:32