2012-03-23 42 views
8

我知道如果我使用System.Transactions.TransactionScope而不指定隔離級別,它將默認爲Serializable。但是,如果我不使用事務範圍,而只使用老式的表格適配器呢?什麼是默認的隔離級別呢?什麼是默認的ADO.NET隔離級別?

非常感謝提前。

+5

這是更復雜的;隔離級別在池連接的使用之間不會重置,所以它也取決於「底層連接的最後一次使用是做什麼的」 – 2012-03-23 18:26:17

+0

@MarcGravell是的,這很好,謝謝。我的一位同事給我發了一個提到同樣事情的鏈接。不完全是成功的坑,以及我在使用.NET的7年中沒有注意到它我不知道... – 2012-03-23 18:37:54

+0

但是「默認默認」可能是讀取提交 – 2012-03-23 18:44:22

回答

3

如果您需要對應用程序數據操作進行絕對處理,您可能不希望依賴默認值。這些東西可以在框架版本之間改變。

強烈建議在所有數據調用中明確隔離級別和會話設置 - 可以通過TransactionScope(這可能意味着升級到DTC,取決於具體情況),也可以顯式在目標存儲過程調用中(如果這是所採用的路由)。

上DTC/TransactionScope的更多細節:https://stackoverflow.com/a/9075800/1568341

TL; DR

答:閱讀因犯SQLS但不要承擔默認