DataSet 对象对于支持 ADO.NET 中的断开连接的分布式数据方案起到至关重要的作用。 DataSet 是数据驻留在内存中的表示形式,不管数据源是什么,它都可提供一致的关系编程模型。它可以用于多种不同的数据源,用于 XML 数据,或用于管理应用程序本地的数据。 DataSet 表示包括相关表、约束和表间关系在内的整个数据集。 下图将显示 DataSet 对象模型。

DataSet 中的方法和对象与关系数据库模型中的方法和对象一致。
DataSet 还可以按 XML 的形式来保持和重新加载其内容,并按 XML 架构定义语言 (XSD) 架构的形式来保持和重新加载其架构。有关更多信息,请参见在数据集中使用 XML (ADO.NET)。

ADO.NET DataSet 包含由 DataTable 对象表示的零个或多个表的集合。DataTableCollection 包含 DataSet 中的所有 DataTable 对象。
DataTable 在 System.Data 命名空间中定义,表示内存驻留数据的单个表。 其中包含由 DataColumnCollection 表示的列集合以及由 ConstraintCollection 表示的约束集合,这两个集合共同定义表的架构。 DataTable 还包含 DataRowCollection 所表示的行的集合,而 DataRowCollection 则包含表中的数据。 除了其当前状态之前,DataRow 还会保留其当前版本和初始版本,以标识对行中存储的值的更改。

DataSet 在其 DataRelationCollection 对象中包含关系。 关系由 DataRelation 对象来表示,它使一个 DataTable 中的行与另一个 DataTable 中的行相关联。 关系类似于可能存在于关系数据库中的主键列和外键列之间的联接路径。 DataRelation 标识 DataSet 中两个表的匹配列。
通过关系可以从 DataSet 中的一个表导航至另一个表。DataRelation 的基本元素为关系的名称、相关表的名称以及每个表中的相关列。 关系可以通过一个表的多个列来生成,方法是将一组 DataColumn 对象指定为键列。 将关系添加到 DataRelationCollection 中之后,可以选择添加 UniqueKeyConstraint 和 ForeignKeyConstraint,在对相关列的值进行更改时,强制执行完整性约束。

