回到目錄
在上一篇文章中提到了並發沖突,還說詳細的說明在這講來說,呵呵,那現在就說一下吧!
事實上,linq to sql中的並發沖突是指記錄在進行update操作時,客戶端A1取出的數據{1,zzl,male},客戶端A2也取出這條數據{1,zzl,male},這時A1進行對實體重新賦值{1,zzl,female},並進行submit提交,數據庫的值被改為{1,zzl,female}
在進行submitchange時,由於產生了並發異常,這時.net會拋出System.Data.Linq.ChangeConflictException異常,我們可以把它進行捕捉,然後根據我們的要求,去重新進行數據上下文的提交,事實上,代碼部分已經在上一篇文章中給出,這裡,再寫一遍
= ((cSet.Inserts.Count > || cSet.Updates.Count > || cSet.Deletes.Count > && ! (System.Data.Linq.ObjectChangeConflict occ (Exception)
我們可以看到,數據上下文的ChangeConflicts屬性用來獲取所有成員的並發沖突,這時,它所有沖突遍歷後,然後進行Resove 將沖突進行解決,最後再把上下文提交到數據庫覆蓋掉原來的{1,zzl,female},數據庫中最後保存的內容將是A2客戶端修改的值了。
回到目錄