提到數據庫操作特別是企業級的數據庫應用就不得不提一個多人操作時經常會產生的問題——並發沖突本文首先來看一下什麼是並發沖突傳統的並發沖突有現有的處理方式最後結合EF看一個處理並發沖突的實例
一要完成本文中的實例您需要作如下准備
將Visual Studio 及NET Framework 升級到SP點擊轉到升級地址 安裝SQL SERVER VS 中自帶的EXPRESS版的SQL SERVER應該也可以用 下載並附加數據庫點擊下載DemoDbV 創建一個VB Console Application並且取一個合適的名字(例如Concurrency之類的)注意目標Framework要設置成版 二什麼是並發沖突
讓我們來看一個跟取款相關的例子某年某月某日某時某分老王在A取款機取錢他兒子小王同時在B取款機取錢(不要問我為什麼這麼巧^_^)他倆從同一個賬號上取於是就發生了如下一序列的操作
A取款機向中央數據庫提問這賬上還有多少錢
B取款機向中央數據庫詢問這賬上還有多少錢
中央數據庫回答A取款機W
中央數據庫回答B取款機W
然後老王對A取款機說我要取出W
同時小王對B取款機說我要取出W
A取款機就算了一下WW=W>於是就吐出W現金給了老王並且准備告訴中央數據庫現在還剩W啦但是就在它告訴中央數據庫之前發生了以下的事情
B取款機計算了一下W(此時它還不知道余額已經成W了因為A取款機還沒有告訴中央數據庫)減去W等於W大於於是就吐出W現金給了小王然後它當然也要知會中央數據庫
中央數據庫於是收到A取款機的消息說這個賬號還剩W於是刷新余額為W然後又收到B取款機說還剩W於是就刷新余額為W
From:http://tw.wingwit.com/Article/program/net/201311/11326.html