结果集与数据集(设备)
更新:2007 年 11 月
Visual Studio数据源配置向导可以在基于 DataSet 或 System.Data.SqlServerCe.SqlCeResultSet 的设备项目中生成数据源代码。生成的代码表示设备项目中的一个数据源,该数据源可以绑定到用户界面控件并与 SQL Server Compact 3.5 数据库交换数据。但是,与基于 DataSet 的代码相比,基于 SqlCeResultSet 的代码运行速度更快,使用的内存更少,并且更为简练。这是因为 SqlCeResultSet 使用指针直接操作数据库,而 DataSet 则是在设备应用程序中存储数据库中数据的副本。本主题描述基于 SqlCeResultSet 和 DataSet 的两种数据源。
说明: |
---|
当您使用数据源向导创建新的数据源时,默认情况下 Visual Studio 将生成基于 DataSet 的代码。若要生成其中任意一个类或同时生成这两个类,请参见如何:生成 SqlCeResultSet 代码(设备)。 |
下图阐释了 SqlCeResultSets 和 DataSets 之间的体系结构差异。
结果集
当数据源配置向导生成基于 SqlCeResultSet 的数据源时,它将创建一个从 SqlCeResultSet 继承的类。与基于 DataSet 的数据源不同,基于 SqlCeResultSet 的数据源不存储数据。相反,SqlCeResultSet 维护一个指向数据库的指针,并且无需使用 TableAdapter 就可以读取和更新数据库中的数据。可以直接访问数据库的原因是 SqlCeResultSet 是 SQL Server Compact 3.5(在早期版本中为 SQL Server Mobile)的 .NET Compact Framework 数据提供程序的一部分。有关更多信息,请参见生成类型化 ResultSet。
总之,与基于 DataSet 的数据源相比,基于 SqlCeResultSet 的数据源需要更少的内存,具有更好的性能,但是功能也少一些。
数据集
当数据源配置向导生成基于 DataSet 的数据源时,它将创建一些类来表示数据,并创建一个 TableAdapter 类以便在应用程序和数据库之间交换数据。用于表示数据的类从 DataSet、Microsoft.Office.Interop.Excel.DataTable 和 DataRow 继承,并且存储来自数据库的数据。数据源向导生成以下类来镜像数据库的关系结构和约束:
一个派生自 DataSet 的类,它对于在“添加数据源向导”中选择的每个表,都包含一个 Datatable。有关更多信息,请参见类型化数据集 (ADO.NET)。
每个派生自 DataTable 的类还包含一组 DataColumn 对象,这些对象镜像数据库中的列。
一个派生自每个表的 DataRow 的类。
数据库的关系约束,例如非 null、唯一、主键和外键。
一个 TableAdapter 类,用于在数据库和设备应用程序中的数据对象之间交换数据。TableAdapter 类包含从数据库中读取数据和将更改后的数据重新写入数据库的方法。有关更多信息,请参见 TableAdapter 概述。
本主题稍早介绍的类与 ADO.NET 体系结构兼容。因此,该数据访问模型类似于使用桌面上的 .NET Framework 的 ADO.NET 数据。有关更多信息,请参见访问数据 (Visual Studio) 和 .NET Compact Framework 中的数据访问和 XML 支持。
总之,与基于 SqlCeResultSet 的数据源相比,基于 DataSet 的数据源具有更多的功能,但同时也需要更多的内存和处理器资源。