ADO.NET


ADO.NET (正體)

Free Web Hosting with Website Builder

ADO.NET 是微软.NET为基于应用程序的主要关系式数据访问模块。主要用于访问各式各样的数据来源,如:.NET本身的提供源(Provider)、或某些经由.NET桥接的特别提供源,像OLE DB来源、Oracle来源或ODBC驱动程序等。ADO.NET有时被视为进化的ADO技术,但是着眼于介于这两者间有哪些主要更动才是重点。

目前 ADO.NET 已经发展为于微软 .NET Framework 唯一且重要的内核数据访问方案,微软也利用了 ADO.NET 发展了许多的解决方案,例如 ADO.NET Entity Framework 以及 ADO.NET Data Services 等。

目录

结构

ADO.NET包括两个主要部分:

数据提供源 (Data provider)

供应源对象群。这些类提供对数据源──如SQL Server数据库──访问和通讯的功能。每个数据源有它自己的供应源对象组,不过它们每个都有共通的字尾:

  • Connection (连接): 提供对数据源访问所需的连接。亦扮演abstract factory(抽象工厂)指挥对象的脚色。
  • Command (指令): 用来对数据源执行许多动作,如读取、更新、删除相关数据。
  • Parameter (参数): 描述附于指令的单一变量。常见示例是给预存程序 (stored procedure) 声明的参数。
  • DataAdapter (数据转接元): 顾名思义提供数据组(DataSet)对象与数据源转接 (参照下文)。
  • DataReader (数据读取元): 一个用来高效处理大型结果列表──一次一个纪录──而不暂存在用户端的对象。

数据组 (DataSet)

数据组(DataSet)对象群,是一组类描述单一内存里头的关系数据库。只能有一组数据元中立的数据组对象组群,不过其他数据源的数据和数据库概要(schema)结构可以利用数据转接元导入。这些类形成自给自足的层次结构:

  • 数据组对象表达了一个完整数据库。它可包括表、与表与表之间的关系。
    • 数据表(DataTable)对象表达数据库里头的单一表格。它有名称、行、与列。
      • 数据行(DataRow)对象表达表里头的一行。并允许读取、更新该行的值,也允许通过主键(primary key)和外键(foreign key)关系抓取跟该行有关系的任何行的数据。
    • 数据关系(DataRelation)描述表间的关系性,例如主键外键关系。对促成数据行取得相关行的功能相当有用。
    • 约束(Constraint)描述数据库里需要强制执行的属性,例如主键栏下每个值唯一性。随着数据被修改任何违反该约束的都会造成例外状况。

ADO.NET 数据来源提供者一览

在 .NET Framework 中,ADO.NET 默认提供了四种数据来源:

  • SQL Server: 由 System.Data.SqlClient 提供支持。
  • OLE DB Data Source: 由 System.Data.OleDb 提供支持。
  • Oracle: 由 System.Data.OracleClient 提供支持,但使用者的计算机必须安装 Oracle Client 8.1.7 或更新版本才行。
  • ODBC: 补 OLE DB Provider for ODBC 的支持,由 System.Data.Odbc 提供支持。

其他厂商亦为不同的数据库提供数据来源:

  • DataDirect Technologies发行100%列管提供源,支持主流企业数据库 (Oracle, Sybase, DB2, SQL Server, Progress RDBMS)
  • OpenLink Software给大量的客户指定数据库发行提供源,包括到其他数据访问机构的桥接提供源,并可以在窗口下微软自己或者Mono的CLR实做下支持。
  • MySQL为本身的 MySQL Database Server 提供了 ADO.NET 的本地数据提供者。
  • Oracle自行开发的 .NET Data Provider。

ADO.NET与Visual Studio.NET

在Visual Studio.NET集成开发环境已内置功能,可为特别的数据库概要创造特殊的数据组子类群,并允许通过强式属性轻易的访问每个区域数据。这在编译时期下帮助捕获更多编程错误并且让集成开发环境下的Intellisense功能更为有用。

ADO Vs. ADO.NET

关于从ADO到ADO.NET的变动,MSDN里头这篇文章有相当有用的讨论。

对于 ADO 的开发人员来说,最明显的变化在于以往 ADO 中的 Recordset 消失了,并且明确的分开为连接型的 DataReader 以及脱机型的 DataSet 与 DataTable,并且发展支持脱机型数据来源的浏览工具 DataView,这样的改变,让习惯使用 ADO 的 VB/ASP 开发人员会有某种程度的不习惯,同时让 ADO.NET 的学习会较 ADO 有较些许的复杂性,因此有部份新入门或是 VB 6.0/ASP 开发人员会在学习 .NET Framework 或是使用 VB.NET 开发应用程序时,在 .NET Framework 中使用 ADO 来连接数据来源。但在 .NET Framework 应用程序使用 ADO 的话,.NET Framework 会因为要多一层COM 和 .NET 数据之间的转换,会让应用程序效能有少部份的损耗。

ADO.NET Entity Framework

ADO.NET Entity Framework 是微软发展的 O/R Mapping 解决方案,在 Visual Studio 2005 初期开发时,微软提出对象空间群的构想,试着要以 ADO.NET 以及面向对象的规格实现出能够与 Hibernate 相抗衡的 O/R Mapping 工具,不过 并未在 Visual Studio 2005 (.NET Framework 2.0) 中被开发完成,而它被改为下一代 ADO.NET 的新功能,并改名为 ADO.NET Entity Framework,纳入 Visual Studio 2008 (.NET Framework 3.5) 的成员之一,于 Visual Studio 2008 Service Pack 1 (.NET Framework 3.5 Service Pack 1) 中正式发表。

参见







Why are we here?
All text is available under the terms of the GNU Free Documentation License
This page is cache of Wikipedia. History