下面就对ADO.NET运行错误进行介绍说明,导致DataSet对象包含一个数据集。可以将DataSet对象视为许多DataTable对象(存储在DataSet对象的Tables集合中)的容器。请有时,开发人员可能希望访问一个运行在中间层服务器上的组件,以获取许多表的内容。
这时不必重复调用该服务器以便每次从一个表中获取数据,而是可以将所有数据都封装入一个DataSet对象之中,并在一次单独调用中将其返回。但DataSet对象的功能绝不仅仅是作为多个DataTable对象的容器。
存储在DataSet对象中的数据未与数据库连接。对数据所做的任何更改都将只是缓存在每个DataRow之中。要将这些更改传递给数据库时,将整个DataSet回传给中间层服务器可能并非一种有效方法。可以使用GetChanges方法仅从DataSet中选出被修改的行。通过这样的方式,可以在不同进程或服务器之间传递较少数据。#t#
DataSet还公开了Merge方法,该方法可作为GetChanges方法的一个补充。用于向数据库提交更改的中间层服务器(它使用的是由Merge方法返回的较小DataSet)将会返回一个包含着新获得数据的DataSet。可以使用DataSet类的Merge方法来将两个DataSet对象的内容合并入一个DataSet之中。这个例子又一次表明在ADO.NET运行错误设计开发ADO.NET时,一直将多层应用程序作为考虑内容之一。过去的微软数据访问模型就没有类似特性。
您可以创建DataSet对象,而且无须与数据库ADO.NET运行错误通信就可以用信息填充DataSet对象的Tables集合。在以前的数据访问模型中,在本地添加新行之前,通常需要查询数据库,然后将它们提交给数据库。而使用ADO.NET,在准备好提交新数据行之后才需要与数据库通信。
DataSet类还有一些特性,利用这些特性可以将DataSet类写入一个文件或一个内存区域,或者从文件或内存区域ADO.NET运行错误中读出该类。您可以只保存DataSet对象的内容,或只保存DataSet对象的结构,也可以两者都保存。ADO.NET将此数据存储为XML文档。
由于ADO.NET与XML密切相关,所以在ADO.NET的ADO.NET运行错误DataSet对象和XML文档之间传递数据只是小事一桩。这样就能够利用XML的强大功能之一:轻松转换数据结构的功能。例如,可以使用可扩展样式语言(Extensible Stylesheet Language,XSL)转换模板将输出到XML文档的数据转换为HTML。