为了更好地支持断开连接的模型,ADO.NET组件将数据访问与数据处理分离。这一操作是通过两个主要的组件来完成的:DataSet和.NET Framework数据提供程序。下图说明了数据访问与数据处理分离的概念。
DataSet是ADO.N ET断开连接的体系结构的核心组件,用于数据访问,但与具体数据源无关。因此它可以用于多种不同的数据源和ML数据,甚至用于管理应用程序的本地数据,例如内存中缓存的数据。DataSet包含一个集合,集合中有一个或多个由行和列数据组成的DataTable对象,以及主键码、外键码、约束和DataTable对象中数据的关系信息。DataSet本质上是一个内存中的数据库,它不需要关心数据的来源。数据可以来自数据库、XML.文件。甚至同时来自这两者或是其他什么地方。无论数据源位于什么地方,都可以先对DataSet执行插入、更新和删除操作,再把变动保存到数据源中口本章后面将深入讨论DataSet对象家族。
ADO.N ET体系结构的另—个核心元素是.NET数据提供程序(Data Provider),它的组件用于进行数据处理(和DataSet的数据访问功能相对应)。
下表概述了组成 .NET Framework 数据提供程序的四个核心对象。
对象 | 描述 |
---|---|
Connection |
建立与特定数据源的连接。 所有 Connection 对象的基类均为 DbConnection 类。 |
Command |
对数据源执行命令。 公开 Parameters ,并可在 Transaction 范围内从 Connection 执行。 所有 Command 对象的基类均为 DbCommand 类。 |
DataReader |
从数据源中读取只进且只读的数据流。 所有 DataReader 对象的基类均为 DbDataReader 类。 |
DataAdapter |
使用数据源填充 DataSet 并解决更新。 所有 DataAdapter 对象的基类均为 DbDataAdapter 类。 |
DataAdapter使用Command对象在数据源上执行SQL命令,给DataSet加载数据,并把DataSet中已调整的数据返回到数据源中。
.NET Framework 中包含的数据提供程序。
.NET Framework data provider — .NET Framework 数据提供程序 | 描述 |
---|---|
用于 SQL Server 的 .NET Framework 数据提供程序 | 提供 Microsoft SQL Server 的数据访问。 使用 System.Data.SqlClient 命名空间。 |
用于 OLE DB 的 .NET Framework 数据提供程序 | 提供对使用 OLE DB 公开的数据源中数据的访问。 使用 System.Data.OleDb 命名空间。 |
用于 ODBC 的 .NET Framework 数据访问接口 | 提供对使用 ODBC 公开的数据源中数据的访问。 使用 System.Data.Odbc 命名空间。 |
用于 Oracle 的 .NET Framework 数据访问接口 | 适用于 Oracle 数据源。 用于 Oracle 的 .NET Framework 数据提供程序支持 Oracle 客户端软件版本8.1.7 和更高版本,并使用 System.Data.OracleClient 命名空间。 |
EntityClient 提供程序 | 提供对实体数据模型 (EDM) 应用程序的数据访问。 使用 System.Data.EntityClient 命名空间。 |
.NET Framework SQL Server Compact 4.0 的数据提供程序。 | 提供 Microsoft SQL Server Compact 4.0 的数据访问。 使用 System.Data.SqlServerCe 命名空间。 |
选择数据提供程序时要遵循以下原则:首先选择关系数据库管理系统(RDBMS),如果存在对应的数据提供程序,就使用它;如果不存在,就使用.NET OLE DB数据提供程序。大多数RDBMS厂商现在都创建自己的.NET数据提供程序,以鼓励.NET开发人员使用它们的数据库。最后,如果没有OLE DB数据提供程序,就使用.NET ODBC数据提供程序进行ODBC访问。
因此,如果应用程序使用的是SQL Server,则选择SQL Server .NET数据提供程序。.NET OLE DB数据提供程序用于访问通过OLE DB提供的数据源b后面将详细讨论这些内容。