程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> LINQ-to-SQL那點事~LINQ-to-SQL中的並發沖突與應對

LINQ-to-SQL那點事~LINQ-to-SQL中的並發沖突與應對

編輯:C#入門知識

回到目錄

在上一篇文章中提到了並發沖突,還說詳細的說明在這講來說,呵呵,那現在就說一下吧!

並發沖突產生的原因

事實上,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客戶端修改的值了。

回到目錄

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved