深入ADO.NET開(kāi)發(fā)—高級(jí)數(shù)據(jù)訪問(wèn)技術(shù)

深入ADO.NET開(kāi)發(fā)—高級(jí)數(shù)據(jù)訪問(wèn)技術(shù)

ID:43217948

大小:455.50 KB

頁(yè)數(shù):26頁(yè)

時(shí)間:2019-10-03

深入ADO.NET開(kāi)發(fā)—高級(jí)數(shù)據(jù)訪問(wèn)技術(shù)_第1頁(yè)
深入ADO.NET開(kāi)發(fā)—高級(jí)數(shù)據(jù)訪問(wèn)技術(shù)_第2頁(yè)
深入ADO.NET開(kāi)發(fā)—高級(jí)數(shù)據(jù)訪問(wèn)技術(shù)_第3頁(yè)
深入ADO.NET開(kāi)發(fā)—高級(jí)數(shù)據(jù)訪問(wèn)技術(shù)_第4頁(yè)
深入ADO.NET開(kāi)發(fā)—高級(jí)數(shù)據(jù)訪問(wèn)技術(shù)_第5頁(yè)
資源描述:

《深入ADO.NET開(kāi)發(fā)—高級(jí)數(shù)據(jù)訪問(wèn)技術(shù)》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫(kù)。

1、深入ADO.NET開(kāi)發(fā)—高級(jí)數(shù)據(jù)訪問(wèn)技術(shù)微軟特邀開(kāi)發(fā)專家基礎(chǔ)預(yù)習(xí)熟悉MicrosoftADO.NET了解WebServices基礎(chǔ)開(kāi)發(fā)熟悉.NET文件集操作LEVEL400議題并發(fā)連接池事務(wù)可抽取的數(shù)據(jù)訪問(wèn)層并發(fā)性問(wèn)題在可斷開(kāi)連接架構(gòu)中必須要面對(duì)并發(fā)問(wèn)題當(dāng)兩個(gè)(或多個(gè))用戶獲取并修改相同的記錄,然后試圖同時(shí)維持各自的修改時(shí),將會(huì)發(fā)生沖突:臟讀,不可重復(fù)讀,虛幻讀當(dāng)提交多個(gè)更新的時(shí)候,會(huì)造成部分更新無(wú)法正確完成悲觀與樂(lè)觀(ADO.NET構(gòu)建)并發(fā)鎖ADO.NET中對(duì)并發(fā)性問(wèn)題的處理與DataAdapter對(duì)象相連接的DataSet對(duì)象

2、使用樂(lè)觀鎖來(lái)處理記錄內(nèi)容沖突如果使用用戶存儲(chǔ)過(guò)程來(lái)替代表操作的話,并發(fā)問(wèn)題的處理還需要一些額外的工作DataAdapter配置向?qū)軌騽?chuàng)建存儲(chǔ)過(guò)程來(lái)處理這個(gè)問(wèn)題當(dāng)ContinueUpdateOnError為false(缺省值)時(shí),在發(fā)生第一個(gè)沖突的時(shí)候會(huì)拋出DBConcurrencyException異常捕獲該異常并且通知用戶,或者處理該異?;蛱崾居脩粝乱徊叫枰龀瞿男┻x擇并發(fā):在.NET中使用樂(lè)觀鎖的處理步驟DataSetchanges=myDataSet.GetChanges();try{mySqlDataAdapter.Upd

3、ate(changes);myDataSet.Merge(changes);}catch(DBConcurrencyExceptione){//通知用戶記錄從上次更新到現(xiàn)在已經(jīng)發(fā)生過(guò)變化,放棄更新}finally...更高級(jí)的操作模型DataSetchanges=myDataSet.GetChanges();try{mySqlDataAdapter.ContinueOnError=true;mySqlDataAdapter.Update(changes);if(changes.HasErrors){//獲取錯(cuò)誤DataRow[]co

4、llisions=changes.Tables[0].GetErrors();//處理錯(cuò)誤}演示一處理并發(fā)性問(wèn)題連接池連接池可以極大地提升性能和可擴(kuò)展性避免由創(chuàng)建連接所帶來(lái)的大量消耗通過(guò)在連接字符串中添加以下屬性來(lái)調(diào)節(jié)連接池:Pooling=true;MaxPoolSize=5;MinPoolSize=3;上面的字符串將打開(kāi)連接池,并且確保在連接池中至少存在著3個(gè)連接,并且最多為5個(gè)連接當(dāng)達(dá)到最大連接時(shí),打開(kāi)新鏈接的請(qǐng)求將排隊(duì)一段可配置的時(shí)間。注意鏈接是通過(guò)對(duì)鏈接字符串精確匹配的法則被池化的。池化機(jī)制對(duì)名稱-值對(duì)間的空格敏感。例如,

5、下面的兩個(gè)鏈接字符串將生成單獨(dú)的池,因?yàn)榈诙€(gè)字符串包含了一個(gè)額外的空字符。"IntegratedSecurity=SSPI;Database=Northwind""IntegratedSecurity=SSPI;Database=Northwind"演示二連接池事務(wù)ACID原則:原子性,一致性,隔離性,持久性事務(wù)行為要么完成所有動(dòng)作,要么不做任何動(dòng)作同時(shí)提交或者回滾所有的修改不是所有的SQL語(yǔ)句都允許出現(xiàn)在事務(wù)中ADO.NET事務(wù)只能應(yīng)用于單一鏈接中SqlTransaction對(duì)象從SqlConnection.BeginTrans

6、action()方法中返回SqlTransaction類SqlTransactiontrans=conn.BeginTransaction();隔離級(jí)別枚舉(IsolationLevel):ReadCommitted,ReadUncommitted,RepeatableRead,Serializable,UnspecifiedSerializable是最高級(jí)別的隔離//處理工作Insert,Update,Delete//要么提交所有的修改trans.Commit();//要么如果發(fā)生錯(cuò)誤,撤回所有的修改trans.RollBack(

7、);隔離級(jí)別隔離級(jí)別臟讀不可重復(fù)讀虛幻讀ReadUncommitted是是是ReadCommitted否是是RepeatableRead否否是Serializable否否否Serializable提供了最高的隔離級(jí)別,但卻只有最低的執(zhí)行效率演示三本地事務(wù)操作高級(jí)事務(wù)為了執(zhí)行跨數(shù)據(jù)庫(kù)事務(wù),需要通過(guò)System.EnterpriseServices向分布式事務(wù)協(xié)調(diào)器(DTC)注冊(cè)鏈接在中間層Web服務(wù)上添加:System.EnterpriseServices.Transaction屬性TransactionOption枚舉:Disabl

8、ed,NotSupported,Required,RequiresNew,SupportedTransactionIsolationLevel枚舉:ReadCommitted,ReadUnCommitted,RepeatableRea

當(dāng)前文檔最多預(yù)覽五頁(yè),下載文檔查看全文

此文檔下載收益歸作者所有

當(dāng)前文檔最多預(yù)覽五頁(yè),下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學(xué)公式或PPT動(dòng)畫(huà)的文件,查看預(yù)覽時(shí)可能會(huì)顯示錯(cuò)亂或異常,文件下載后無(wú)此問(wèn)題,請(qǐng)放心下載。
2. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫(kù)負(fù)責(zé)整理代發(fā)布。如果您對(duì)本文檔版權(quán)有爭(zhēng)議請(qǐng)及時(shí)聯(lián)系客服。
3. 下載前請(qǐng)仔細(xì)閱讀文檔內(nèi)容,確認(rèn)文檔內(nèi)容符合您的需求后進(jìn)行下載,若出現(xiàn)內(nèi)容與標(biāo)題不符可向本站投訴處理。
4. 下載文檔時(shí)可能由于網(wǎng)絡(luò)波動(dòng)等原因無(wú)法下載或下載錯(cuò)誤,付費(fèi)完成后未能成功下載的用戶請(qǐng)聯(lián)系客服處理。