大家认为DataSet不好的两个理由:1. 使用XML序列化机制的DataSet与非.NET代码之间的交互不是很好,使用DataSet的Web Services API很难与不支持.NET框架的系统交互;2. DataSet是一个非常通用的容器,程序员可能会牺牲某些.NET框架的类型安全而误用DataSet。
DataSet设计的初衷:为关系型数据库的一个离线缓存,它可以存储很多歌DataTable,每个DataTable中又存储于数据库相匹配的行与列,DataSet及其成员都支持数据绑定,另外,DataSet还支持各个DataTable间的关系以及给DataSet中的数据添加约束。
DataSet不是一个强类型容器,它是一个关于DataTable的字典集合,并且DataTable中的列也是一个字典结构,我们通常情况下,会使用以下的方式来访问DataSet中的数据。
int val = ( int )MyDataSet.Tables[ "table1" ].Rows[ 0 ][ "total" ];
通常,我们希望以下面这种语句来访问DataSet中的数据。
int val = MyDataSet.table1.Rows[ 0 ].total;