新聞中心
LINQ TO SQL分布式事務
作者:佚名 2009-09-18 15:10:13
開發(fā)
后端
分布式 這里介紹LINQ TO SQL分布式事務,以及介紹LINQ TO SQL通過在submitchanges方法的時候指定ConflictMode來定義并發(fā)控制行為。

創(chuàng)新互聯(lián)建站服務項目包括黃巖網(wǎng)站建設(shè)、黃巖網(wǎng)站制作、黃巖網(wǎng)頁制作以及黃巖網(wǎng)絡(luò)營銷策劃等。多年來,我們專注于互聯(lián)網(wǎng)行業(yè),利用自身積累的技術(shù)優(yōu)勢、行業(yè)經(jīng)驗、深度合作伙伴關(guān)系等,向廣大中小型企業(yè)、政府機構(gòu)等提供互聯(lián)網(wǎng)行業(yè)的解決方案,黃巖網(wǎng)站推廣取得了明顯的社會效益與經(jīng)濟效益。目前,我們服務的客戶以成都為中心已經(jīng)輻射到黃巖省份的部分城市,未來相信會繼續(xù)擴大服務區(qū)域并繼續(xù)獲得客戶的支持與信任!
在向大家詳細介紹LINQ TO SQL分布式事務之前,首先讓大家了解下隱式事務和顯式事務,然后全面介紹LINQ TO SQL分布式事務。
LINQ TO SQL,顧名思義,涉及到了數(shù)據(jù)庫操作。那么就會有一個事務的概念,例如,假設(shè)我們需要一次性插入兩個實體,但希望保證這兩個操作的完整性的話。
1. 隱式事務
其實,即便我們不寫代碼,LINQ TO SQL也會自動創(chuàng)建一個事務的。默認事務隔離級別為ReadCommitted
2. 顯式事務
我們也可以自己寫代碼,來明確地控制事務,默認事務隔離級別為ReadCommitted
3. LINQ TO SQL分布式事務
我們也可以使用TransactionScope對象,來定義LINQ TO SQL分布式事務。
注意:TransactionScope的默認隔離級別為可串行化,可能帶來并發(fā)鎖沖突問題。
***大概要談一下并發(fā)控制的問題:這個問題的出現(xiàn)就在于,某些時候,某個客戶端讀取到了數(shù)據(jù),然后它斷開了,在本地修改;同時,另外一個客戶端也讀取到了數(shù)據(jù),并且修改并提交了。此時,***個客戶端如果再進行更新,就應該是有所問題的。這就是所謂的并發(fā)問題。
LINQ TO SQL通過在submitchanges方法的時候指定ConflictMode來定義并發(fā)控制行為:
◆FailOnFirstConflict(默認的)
◆ContinueOnConflict
下面有一個例子,講解了并發(fā)沖突時繼續(xù)操作,并且對沖突項進行解決
- var query = from p in ctx.Products where p.CategoryID == 1 select p;
- foreach (var p in query)
- p.UnitsInStock = Convert.ToInt16(p.UnitsInStock - 1);
- try
- {
- ctx.SubmitChanges(ConflictMode.ContinueOnConflict);
- }
- catch (ChangeConflictException)
- {
- foreach (ObjectChangeConflict cc in ctx.ChangeConflicts)
- {
- Product p = (Product)cc.Object;
- Reponse.Write(p.ProductID + "
- ");
- cc.Resolve(RefreshMode.OverwriteCurrentValues);
- // 放棄當前更新,所有更新以原先更新為準
- }
- }
【編輯推薦】
- Linq匿名類型簡單概述
- Linq隨機讀取數(shù)據(jù)淺析
- Linq Lambda表達式全面分析
- Linq擴展方法簡單分析
- 初探Linq局部變量類型
當前題目:LINQTOSQL分布式事務
標題來源:http://m.5511xx.com/article/ccsehjs.html


咨詢
建站咨詢
