完整的ADO.NET數(shù)據(jù)對象模型圖詳解
ADO.NET經(jīng)過長時間的發(fā)展,很多用戶都很了解ADO.NET數(shù)據(jù)對象模型了,這里我發(fā)表一下個人理解,和大家討論討論。ADO.NET如何承接客戶端的數(shù)據(jù)請求,又如何完成數(shù)據(jù)源的訪問?可以通過圖來說明。這里提到的數(shù)據(jù)源是個更大的概念,數(shù)據(jù)庫是數(shù)據(jù)源中的一種,Excel文件也可能是數(shù)據(jù)源。

ADO.NET的承上啟下作用圖
ADO.NET通過Connection對象與數(shù)據(jù)源相連接,完成架設(shè)線路的作用。Command和DataAdapter對象利用這個Connection對象發(fā)送命令信號給數(shù)據(jù)源,這個命令信號可能是SQL語句,也可能是存儲過程的名字,由數(shù)據(jù)源執(zhí)行完成。如果命令信號要求返回數(shù)據(jù),客戶端就可以利用DataReader或者DataSet對象訪問得到的數(shù)據(jù)。如果命令信號是其他操作,客戶端就可以直接通過Command甚至Connection對象完成操作。
前面提到ADO.NET中的幾個對象。那么完整的ADO.NET數(shù)據(jù)對象模型應(yīng)該是什么樣的呢?我們通過圖來詳細(xì)了解。

ADO.NET數(shù)據(jù)對象模型圖
整個ADO.NET數(shù)據(jù)對象模型分為兩大部分。***部分是.NET Framework數(shù)據(jù)提供程序部分,第二部分是作為客戶端本地緩存的數(shù)據(jù)集部分。.NET Framework數(shù)據(jù)提供程序部分包括的對象有Connection對象,Connection對象又可以產(chǎn)生事務(wù)對象——Command對象,與Command對象伴生的參數(shù)對象,DataReader對象,DataAdapter對象,與DataAdapter對象伴生的SelectCommand、InsertCommand、UpdateCommand、DeleteCommand對象。數(shù)據(jù)提供程序部分負(fù)責(zé)建立連接、發(fā)布命令、傳輸數(shù)據(jù)等功能。
#T#本地緩存數(shù)據(jù)集部分包括DataSet對象,DataSet對象在本地相當(dāng)于一個小型數(shù)據(jù)庫,因此DataSet對象由數(shù)據(jù)表及表關(guān)系組成,所以DataSet對象包含DataTable對象和DataRelation對象,而數(shù)據(jù)表又包含行和列以及約束等結(jié)構(gòu),所以DataTable對象包含DataRow、DataColumn和Constraint對象。本地緩存數(shù)據(jù)集部分可以用來臨時存儲本地數(shù)據(jù),這些數(shù)據(jù)可以是從數(shù)據(jù)庫獲取的,也可以是本地產(chǎn)生的,還可以是被修改的數(shù)據(jù)。在借助DataRelation和Constraint對象情況下,客戶端可以像訪問關(guān)系型數(shù)據(jù)那樣訪問本地緩存數(shù)據(jù)集。
ADO.NET中應(yīng)用XML支持DataSet對象,這是由于XML主要關(guān)注的是關(guān)系和分層的結(jié)構(gòu)化數(shù)據(jù)。DataSet的內(nèi)容可以以XML文檔的形式寫出,也可以將XML文檔的內(nèi)容讀入到DataSet中。

















