MSDN 原文出處
https://msdn.microsoft.com/zh-cn/library/27y4ybxw.aspx
.NET Framework 4.6 and 4.5
其他版本
以前,數(shù)據(jù)處理主要依賴于基于連接的雙層模型。 隨著數(shù)據(jù)處理越來越多地使用多層體系結(jié)構(gòu),程序員正在向斷開方法轉(zhuǎn)換,以便為他們的應(yīng)用程序提供更好的可伸縮性。
ADO.NET 組件
ADO.NET 3.0 用于訪問和操作數(shù)據(jù)的兩個主要組件是 .NET Framework 數(shù)據(jù)提供程序和 DataSet。
.NET Framework 數(shù)據(jù)提供程序.NET Framework 數(shù)據(jù)提供程序是專門為數(shù)據(jù)操作以及快速、只進(jìn)、只讀訪問數(shù)據(jù)而設(shè)計的組件。 Connection 對象提供到數(shù)據(jù)源的連接。 使用 Command 對象可以訪問用于返回數(shù)據(jù)、修改數(shù)據(jù)、運(yùn)行存儲過程以及發(fā)送或檢索參數(shù)信息的數(shù)據(jù)庫命令。 DataReader 可從數(shù)據(jù)源提供高性能的數(shù)據(jù)流。 最后,DataAdapter 在 DataSet 對象和數(shù)據(jù)源之間起到橋梁作用。 DataAdapter 使用 Command 對象在數(shù)據(jù)源中執(zhí)行 SQL 命令以向 DataSet 中加載數(shù)據(jù),并將對 DataSet 中數(shù)據(jù)的更改協(xié)調(diào)回數(shù)據(jù)源。 有關(guān)詳細(xì)信息,請參閱.NET Framework 數(shù)據(jù)提供程序和在 ADO.NET 中檢索和修改數(shù)據(jù)。
DataSetADO.NET DataSet 是專門為獨(dú)立于任何數(shù)據(jù)源的數(shù)據(jù)訪問而設(shè)計的。 因此,它可以用于多種不同的數(shù)據(jù)源,用于 xml 數(shù)據(jù),或用于管理應(yīng)用程序本地的數(shù)據(jù)。 DataSet 包含一個或多個 DataTable 對象的集合,這些對象由數(shù)據(jù)行和數(shù)據(jù)列以及有關(guān) DataTable 對象中數(shù)據(jù)的主鍵、外鍵、約束和關(guān)系信息組成。 有關(guān)詳細(xì)信息,請參閱DataSet、DataTable 和 DataView。
下圖闡釋了 .NET Framework 數(shù)據(jù)提供程序和 DataSet 之間的關(guān)系。
ADO.NET 體系結(jié)構(gòu)
選擇 DataReader 或 DataSet在決定應(yīng)用程序應(yīng)使用 DataReader(請參見使用 DataReader 檢索數(shù)據(jù))還是應(yīng)使用 DataSet(請參見DataSet、DataTable 和 DataView)時,應(yīng)考慮應(yīng)用程序所需的功能類型。 使用 DataSet 可執(zhí)行以下操作:
在應(yīng)用程序中將數(shù)據(jù)緩存在本地,以便可以對數(shù)據(jù)進(jìn)行處理。 如果只需要讀取查詢結(jié)果,則 DataReader 是更好的選擇。
在層間或從 XML Web services 對數(shù)據(jù)進(jìn)行遠(yuǎn)程處理。
與數(shù)據(jù)進(jìn)行動態(tài)交互,例如綁定到 Windows 窗體控件或組合并關(guān)聯(lián)來自多個源的數(shù)據(jù)。
對數(shù)據(jù)執(zhí)行大量的處理,而不需要與數(shù)據(jù)源保持打開的連接,從而將該連接釋放給其他客戶端使用。
如果不需要 DataSet 所提供的功能,則可以通過使用 DataReader 以只進(jìn)、只讀方式返回數(shù)據(jù),從而提高應(yīng)用程序的性能。 雖然 DataAdapter 使用 DataReader 來填充 DataSet 的內(nèi)容(請參見從 DataAdapter 填充 DataSet),但使用 DataReader 可以提升性能,因?yàn)檫@樣可以節(jié)省 DataSet 所使用的內(nèi)存,并將省去創(chuàng)建 DataSet 并填充其內(nèi)容所需的處理。
LINQ to DataSet
LINQ to DataSet 提供對在 DataSet 對象中緩存的數(shù)據(jù)的查詢功能和編譯時類型檢查。 它使您可以使用一種 .NET Framework 開發(fā)語言(例如 C# 或 Visual Basic)來編寫查詢。 有關(guān)詳細(xì)信息,請參閱LINQ to DataSet。
LINQ to SQL
LINQ to SQL 支持查詢無需使用中間概念模型即可映射到關(guān)系數(shù)據(jù)庫數(shù)據(jù)結(jié)構(gòu)的對象模型。 每個表均由獨(dú)立的類表示,從而使對象模型與關(guān)系數(shù)據(jù)庫架構(gòu)緊密地耦合在一起。 LINQ to SQL 可將對象模型中的語言集成查詢轉(zhuǎn)換為 Transact-SQL 并將其發(fā)送到數(shù)據(jù)庫以便執(zhí)行。 當(dāng)數(shù)據(jù)庫返回結(jié)果時,LINQ to SQL 將結(jié)果轉(zhuǎn)換回對象。 有關(guān)詳細(xì)信息,請參閱LINQ to SQL [LINQ to SQL]。
ADO.NET Entity Framework
ADO.NET 實(shí)體框架專門用于讓開發(fā)人員能夠通過針對概念應(yīng)用程序模型進(jìn)行編程(而不是直接針對關(guān)系存儲架構(gòu)進(jìn)行編程)來創(chuàng)建數(shù)據(jù)訪問應(yīng)用程序。 這樣做的目的是減少面向數(shù)據(jù)的應(yīng)用程序所需的編碼和維護(hù)工作。 有關(guān)詳細(xì)信息,請參閱ADO.NET 實(shí)體框架。
WCF 數(shù)據(jù)服務(wù)
WCF 數(shù)據(jù)服務(wù) 用于在 Web 或 Intranet 上部署數(shù)據(jù)服務(wù)。 這些數(shù)據(jù)將按照實(shí)體數(shù)據(jù)模型的規(guī)范組織成不同的實(shí)體和關(guān)系。 在此模型上部署的數(shù)據(jù)可通過標(biāo)準(zhǔn)的 HTTP 協(xié)議進(jìn)行尋址。 有關(guān)詳細(xì)信息,請參閱WCF 數(shù)據(jù)服務(wù) 4.5。
XML 和 ADO.NET
ADO.NET 利用 XML 的功能來提供對數(shù)據(jù)的斷開連接的訪問。 ADO.NET 是與 .NET Framework 中的 XML 類一起設(shè)計的,它們都是同一個體系結(jié)構(gòu)的組件。
ADO.NET 和 .NET Framework 中的 XML 類集中于 DataSet 對象中。 無論 XML 源是文件還是 XML 流,都可以用其中的數(shù)據(jù)來填充 DataSet。 無論 DataSet 中數(shù)據(jù)的源是什么,都可以將 DataSet 作為符合萬維網(wǎng)聯(lián)合會 (W3C) 的 XML 進(jìn)行編寫,其架構(gòu)作為 XML 架構(gòu)定義語言 (XSD) 架構(gòu)。 由于 DataSet 的本機(jī)序列化格式為 XML,因此它是用于在層間移動數(shù)據(jù)的絕佳媒介,這使 DataSet 成為了與 XML Web 服務(wù)之間遠(yuǎn)程處理數(shù)據(jù)和架構(gòu)上下文的最佳選擇。 有關(guān)詳細(xì)信息,請參閱XML 文檔和數(shù)據(jù)。
新聞熱點(diǎn)
疑難解答