原文:http://m.survivalescaperooms.com/liuhaorain/archive/2012/02/06/2340409.html
簡(jiǎn)單的講,ADO.NET是一組允許.NET開發(fā)人員使用標(biāo)準(zhǔn)的,結(jié)構(gòu)化的,甚至無連接的方式與數(shù)據(jù)交互的技術(shù)。對(duì)于ADO.NET來說,可以處理數(shù)據(jù)源是多樣的??梢允菓?yīng)用程序唯一使用的創(chuàng)建在內(nèi)存中數(shù)據(jù),也可以是與應(yīng)用程序分離,存儲(chǔ)在存儲(chǔ)區(qū)域的數(shù)據(jù)(如文本文件、xml、關(guān)系數(shù)據(jù)庫(kù)等)。
具體來說,ADO.NET 對(duì) Microsoft SQL Server 和 XML 等數(shù)據(jù)源以及通過 OLE DB 和 XML 公開的數(shù)據(jù)源提供一致的訪問。數(shù)據(jù)共享使用者應(yīng)用程序可以使用 ADO.NET 來連接到這些數(shù)據(jù)源,并檢索、處理和更新所包含的數(shù)據(jù)。
作為.NET框架的重要組成部分,ADO.NET 類封裝在 System.Data.dll 中,并且與 System.Xml.dll 中的 XML 類集成。當(dāng)編譯使用 System.Data 命名空間的代碼時(shí),需要引用System.Data.dll 和 System.Xml.dll。
作為一個(gè)普通的縮略詞,"ADO.NET”并只不是"ADO”的簡(jiǎn)單升級(jí)版本。嚴(yán)格的講,ADO.NET和ADO是兩種截然不同的數(shù)據(jù)訪問方式。
ADO的全稱是Activex Data Objects,它是早期(.NET還未實(shí)施)開發(fā)人員用來訪問數(shù)據(jù)的組件。隨著.NET的發(fā)展,ADO.NET順其自然地以其顯著的優(yōu)越性逐步取代ADO。從技術(shù)層面講,ADO使用OLE DB接口并基于微軟的COM技術(shù),而ADO.NET擁有自己的ADO.NET接口并且基于微軟的.NET體系架構(gòu)。
雖然大多數(shù)基于 .NET 的新應(yīng)用程序?qū)⑹褂?ADO.NET 來編寫,但 .NET 程序員仍然可以通過 .NET COM 互操作性服務(wù)來使用 ADO。
System.Data命名空間提供了不同的ADO.NET類,它們既分工明確,又相互協(xié)作地提供表格數(shù)據(jù)的訪問服務(wù)。該類庫(kù)包含兩組重要的類:一組負(fù)責(zé)處理軟件內(nèi)部的實(shí)際數(shù)據(jù)(DataSet),一組負(fù)責(zé)與外部數(shù)據(jù)系統(tǒng)通信(Data PRovider)。具體架構(gòu)如下圖所示:
圖1.3.1 ADO.NET核心組件
DataSet 是 ADO.NET 的非連接(斷開)結(jié)構(gòu)的核心組件。DataSet 的設(shè)計(jì)目的很明確:為了實(shí)現(xiàn)獨(dú)立于任何數(shù)據(jù)源的數(shù)據(jù)訪問。因此,ADO.NET結(jié)構(gòu)可以用于多種不同的數(shù)據(jù)源,用于 XML 數(shù)據(jù),或用于管理應(yīng)用程序本地的數(shù)據(jù)。DataSet 包含一個(gè)或多個(gè) DataTable 對(duì)象的集合,這些對(duì)象由數(shù)據(jù)行和數(shù)據(jù)列以及主鍵、外鍵、約束和有關(guān) DataTable 對(duì)象中數(shù)據(jù)的關(guān)系信息組成。
ADO.NET 結(jié)構(gòu)的另一個(gè)核心元素是 .NET 數(shù)據(jù)提供程序(Data Provider)。具體包括:
提供一致的數(shù)據(jù)訪問,是使用ADO.NET的一個(gè)關(guān)鍵的優(yōu)勢(shì)。但是對(duì)于開發(fā)人員來說,更大的優(yōu)勢(shì)是通過ADO.NET將管理的數(shù)據(jù)作為對(duì)象來說處理。 表中的每個(gè)字段都是強(qiáng)類型成員,與.NET 通用類型系統(tǒng)(Common Type System)完全兼容。個(gè)別的字段甚至可以作為局部變量來使用。數(shù)據(jù)行或者其他的數(shù)據(jù)集對(duì)象是標(biāo)準(zhǔn)的.NET 集合(Collections),可以用標(biāo)準(zhǔn)的迭代方法處理。
Entity Framework和LINQ是微軟為了提高ADO.NET核心功能而建立的兩個(gè)新的工具。需要注意的是,它們并不是ADO.NET的基本組成部分。
Entity Framework 利用了抽象化數(shù)據(jù)結(jié)構(gòu)的方式,將每個(gè)數(shù)據(jù)庫(kù)對(duì)象都轉(zhuǎn)換成應(yīng)用程序?qū)ο?(entity),而數(shù)據(jù)字段都轉(zhuǎn)換為屬性 (property),關(guān)系則轉(zhuǎn)換為結(jié)合屬性 (association),讓數(shù)據(jù)庫(kù)的 E/R 模型完全的轉(zhuǎn)成對(duì)象模型。而在抽象化的結(jié)構(gòu)之下,則是高度集成與對(duì)應(yīng)結(jié)構(gòu)的概念層、對(duì)應(yīng)層和儲(chǔ)存層,以及支持 Entity Framework 的數(shù)據(jù)提供者 (provider),讓數(shù)據(jù)訪問的工作得以順利與完整的進(jìn)行。
LINQ允許編寫C#或者Visual Basic代碼以查詢數(shù)據(jù)庫(kù)相同的方式操作內(nèi)存數(shù)據(jù)。LINQ是一個(gè)通用的數(shù)據(jù)工具,可以讓你非常容易地融合不同數(shù)據(jù)源的數(shù)據(jù),并得到單一的數(shù)據(jù)結(jié)果集。
原文:http://m.survivalescaperooms.com/liuhaorain/archive/2012/02/06/2340409.html
新聞熱點(diǎn)
疑難解答
圖片精選
網(wǎng)友關(guān)注