ADO.NET 中的视图和过滤器
ADO.NET 中有一层对象,用来创建任意数据源的抽象模型。其中包括 DataSet,DataTable,DataRow,
DataView,DataRelation 等等。
所有这些对象都定义在 System.Data 名字空间。它们形成一个抽象模型,使得无论针对 Windows Form,
Web Form 还是 Web Service 进行编程,都可以使用相同的编程接口。
在实际应用中,这些对象大多会对诸如 SQL Server 一类的关系型数据库中的数据进行操作。但是,它们
可以处理各种数据,而不管它的物理存储媒介。
你可以使用 DataSet 对象来打包和关联各表中的数据,用 DataTable 类来处理表格类型的数据,而
DataRow 对象可以处理表中某一行的数据。
这三个对象都是对数据进行打包,但有不同的逻辑聚合层次。DataSet 是 DataTable 和其他的组合。而
DataTable 是 DataRow 和其他的组合。DataRow 是字段和其他的组合。但是这些对象中都没有内建过滤
和排序的功能。
ADO.NET 提供了一些类来处理这个数据库应用程序中的重要方面。在.Net Beta2 中,这方面最重要的两
个对象就是 DataView 和 DataViewManager。
注意:DataViewManager 是 Beta2 中特有的。在 Beta1 中,相应的功能由 DataSetView 完成。
定制数据视图
DataView 类用来表示定制的 DataTable 的视图。DataTable 和 DataView 的关系是遵循著名的设计模式--
文档/视图模式,其中 DataTable 是文档,而 Dataview 是视图。
在任何时候,你都可以有多个基于相同数据的不同的视图。更重要的是,你可以对每一个具有自己一套属
性、方法、事件的视图作为独立的对象进行处理。这也代表了相对 ADO 一个巨大的飞跃。
ADO Recordset 可以定义过滤字符串。一旦你建立了该字符窜,只有匹配特定标准的数据才能够进行读写。
Filter 属性的工作原理同动态 WHERE 子句很相似。它只是简单的在同一 recordset 对象视图上隐藏了某些
记录。
在 ADO 中,你从没有一个独立的视图对象。一个过滤过的 recordset 总是同一个对象,只不过显示出的记
录比它实际数量少一些而已。
如果你不需要同时处理一些不同的视图,上述问题并不要紧。编程接口赋予了 recordset 既可以是表也可