ADO.NET 体系结构

数据处理传统上主要依赖于基于连接的两层模型。 随着数据处理越来越多地使用多层体系结构,程序员将切换到断开连接的方法,以便为其应用程序提供更好的可伸缩性。

ADO.NET 组件

ADO.NET 的两个主要组件,用于访问和处理数据,是 .NET Framework 数据提供程序和 DataSet

.NET Framework 数据提供程序

.NET Framework 数据提供程序是专门为数据操作以及快速、只进、只读访问数据而设计的组件。 该 Connection 对象提供与数据源的连接。 该 Command 对象允许访问数据库命令以返回数据、修改数据、运行存储过程以及发送或检索参数信息。 DataReader 可从数据源提供高性能的数据流。 最后,DataAdapter 提供了连接 DataSet 对象和数据源的桥梁。 DataAdapter 使用 Command 对象在数据源中执行 SQL 命令以向 DataSet 中加载数据,并将对 DataSet 中数据的更改协调回数据源。 有关详细信息,请参阅 .NET Framework 数据提供程序 以及 检索和修改 ADO.NET 中的数据

DataSet

ADO.NET DataSet 专门设计用于独立于任何数据源的数据访问。 因此,它可以与多个和不同的数据源一起使用,与 XML 数据一起使用,或者用于管理应用程序本地数据。 该 DataSet 集合包含一个或多个 DataTable 对象集合,这些对象由数据行和列组成,以及主键、外键、约束和对象中 DataTable 有关数据的关系信息。 有关详细信息,请参阅 DataSets、DataTables 和 DataViews

下图说明了 .NET Framework 数据提供程序与 DataSet 之间的关系。

ADO.Net 图形
ADO.NET 体系结构

选择数据读取器或数据集

在确定应用程序是否应使用 DataReader (请参阅 使用 DataReader 检索数据)或 DataSet (请参阅 数据集、DataTable 和 DataViews)时,请考虑应用程序所需的功能类型。 请使用DataSet执行以下操作:

  • 在本地应用程序中缓存数据,以便可以对其进行作。 如果只需要读取查询的结果,则 DataReader 选择更好。

  • 在层间或从 XML Web services 对数据进行远程处理。

  • 与数据动态交互,例如绑定到 Windows 窗体控件或合并和关联来自多个源的数据。

  • 对数据执行广泛的处理,而无需与数据源建立开放连接,从而释放其他客户端要使用的连接。

如果不需要 DataSet 具有的功能,则可以通过使用 DataReader 以向前、只读方式返回数据来提高应用程序的性能。 虽然DataAdapter使用DataReader来填充DataSet的内容(请参阅从 DataAdapter 填充数据集),但通过使用DataReader,你可以提高性能,因为可以节省DataSet内存,并避免创建和填充DataSet内容所需的处理。

LINQ to DataSet

LINQ to DataSet 提供查询功能和编译时类型检查,用于检查缓存于 DataSet 对象中的数据。 它允许你以 .NET Framework 开发语言之一(如 C# 或 Visual Basic)编写查询。 有关详细信息,请参阅 LINQ to DataSet

LINQ to SQL

LINQ to SQL 支持针对映射到关系数据库的数据结构的对象模型的查询,而无需使用中间概念模型。 每个表由单独的类表示,将对象模型紧密耦合到关系数据库架构。 LINQ to SQL 将对象模型中的语言集成查询转换为 Transact-SQL,并将其发送到数据库以供执行。 当数据库返回结果时,LINQ to SQL 会将结果转换回对象。 有关详细信息,请参阅 LINQ to SQL

ADO.NET 实体框架

ADO.NET Entity Framework 旨在使开发人员能够基于概念应用程序模型编程来创建数据访问应用程序,而不是直接针对关系存储架构进行编程。 目标是减少面向数据的应用程序所需的代码和维护量。 有关详细信息,请参阅 ADO.NET Entity Framework

WCF 数据服务

WCF 数据服务用于在 Web 或 Intranet 上部署数据服务。 数据根据实体数据模型的规范构建为实体和关系。 此模型上部署的数据可通过标准 HTTP 协议进行寻址。 有关详细信息,请参阅 WCF Data Services 4.5

XML 和 ADO.NET

ADO.NET 利用 XML 的强大功能提供对数据的断开连接访问。 ADO.NET 与 .NET Framework 中的 XML 类一起设计;这两者都是单个体系结构的组件。

ADO.NET 和 .NET Framework 中的 XML 类在 DataSet 对象中汇聚。 DataSet无论它是文件还是 XML 流,都可以使用 XML 源中的数据进行填充。 DataSet 可以被编写为符合万维网联盟 (W3C) 标准的 XML,该 XML 包含其架构作为 XML 架构定义语言 (XSD) 架构,无论 DataSet 数据来源是什么。 由于 DataSet 的本机序列化格式为 XML,因此它是用于在层间移动数据的绝佳媒介,这使 DataSet 成为了与 XML Web 服务之间远程处理数据和架构上下文的最佳选择。 有关详细信息,请参阅 XML 文档和数据

另请参阅