顯然我是真的錯了,在這個線程交易問題
Should I always use transactions in nhibernate (even for simple reads and writes)?
是怎麼回事,你可以從一個讀得到不一致的結果沒有交易?
編輯 - 原始問題是在nhibernate的上下文中。這是nhibernate具體的嗎?
顯然我是真的錯了,在這個線程交易問題
Should I always use transactions in nhibernate (even for simple reads and writes)?
是怎麼回事,你可以從一個讀得到不一致的結果沒有交易?
編輯 - 原始問題是在nhibernate的上下文中。這是nhibernate具體的嗎?
不,它不是冬眠特定的。
簡答:交易是「工作原子單位」,具有一致的世界觀。一旦交易完成,受保護的「視圖」需要通過世界觀(COMMITTTED)來糾正 - 或者在只讀交易的情況下,可以簡單地解除一致的視圖(只需要在交易過程中一致)。
較長的答案:有很多不同類型的事務(READ UNCOMMITTED,READ COMMITTED,SERIALIZABLE,REPEATABLE READ等)影響細節。
見Wiki: Database Transaction和Isolation (DBMS) - 後者需要幾個鏈接點擊,才能找到:-)
想象一下很快做作順序,A和B表示使用DB不同的演員和每一個動作在它自己的運行單關閉隱性交易(而不是其他):
請參閱隔離wiki文章的「示例查詢」部分。
對,但是如果一個服務器操作正在執行單個讀操作,那麼當寫併發操作沒有正確類型的事務隔離時,不會發生未提交的讀操作類型錯誤? – hvgotcodes 2010-07-21 23:32:19
@hvgotcodes我會對我先前的評論進行一些評估。如果您只是在SQL Server *中進行單一讀取,則不必擔心事務,因爲您將自動處於隱式事務中。 – 2010-07-21 23:34:29