什麼是 .NET DataSet?

  • ADO.NET(.NET Framework 所提供的資料存取技術解決方案) 中最為主要的元件。
  • 它是一種資料容器(container)物件,是屬於記憶體的快取資料(in-memory cache of data)。
  • 它完全獨立於資料來源(如 資料庫系統),是離線的(disconnected)。
  • 它所讀取的資料來源可以是:
    • Database (SQL Server, Oracle …)
    • Object (如 MQ 物件)
    • Web Service
  • 它內部可以包含多個表格(Table)的關連,並且可以同時從多個資料來源讀取資料至所定義的表格,儲存成為一列列(row)的資料。
  • 它內部的格式是以 XML 所定義的,所以可以序列化(serialized)為 XML 字串,以方便當成參數來傳遞。(例如,透過 Web Service 傳至 EJB Session Bean)。

DataSet 與 RDB 的連結關係

圖1、DataSet 與 RDB 的連結關係
(點擊圖片鏈接看原圖)圖1、DataSet 與 RDB 的連結關係

DataSet 內的 Table Schema

圖2、利用 Visual Studio .NET 2005 Solution Explorer 瀏覽 DataSet
(點擊圖片鏈接看原圖)圖2、利用 Visual Studio .NET 2005 Solution Explorer 瀏覽 DataSet

DataSet 的優勢

  • 中間層(middleware)的物件可以將 DataSet 視為是位於記憶體的資料庫(虛擬 DB),方便就近 “撈” 資料來處理。
  • 可攜性極高,隨時可以序列化為 XML,當成參數傳遞至其它如表單或物件來處理。
  • 當 DataSet 內的資料經過處理而變動後,由於需要與資料庫內的資料保持同步、維護一致性,所以需要再透過 Data Adapter 建立連線,寫回資料庫內。同步的過程,交由 ADO.NET 的交易機制來處理,這是屬於永續性(persistent) O-R (Object-Relation) mapping 的系統設計議題。