ADO.NET出示2个目标用以查找关联型数据并把它储存在运行内存中,分别是DataSet和DataReader。DataSet出示运行内存中关联数据的主要表现--包含表和顺序、管束等表间的关联的详细数据结合。DataReader出示迅速、只往前、写保护的来源于数据库的数据流。

应用DataSet时,一般应用DataAdapter(也可能是CommandBuilder)与数据源互动,用DataView对DataSet中的数据开展排序和过虑。DataSet能够被承继来创建加强类型的DataSet,用以曝露表、行、列做为加强类型目标特性。
下边的內容包括何时应用DataSet或DataReader,及其如何提升浏览他们所包括的数据,也包含如何提升DataAdapter和DataView的应用(也包含CommandBuilder)。


DataSet与DataReader的比照:
在设计方案应用软件时,决策应用DataSet還是DataReader必须考虑到应用软件必须的作用。

应用DataSet是为了更好地完成应用软件的以下作用:
l 实际操作結果中的好几个分离出来的表。
2 实际操作来源于好几个源(比如来源于好几个数据库、XML文档和excel表的混和数据)的数据。
3 在层中间互换数据或应用XML Web服务。与DataReader 不一样,DataSet能被传送到远程控制手机客户端。
4 根据缓存多次重复使用同样的行结合以提升 性能(比如排序、检索或过虑数据)。
5 每排实行很多的解决。在应用DataReader回到的行上开展拓展解决将使联接存有的時间比必需的更久,进而减少高效率。
6 应用XML实际操作(比如XSLT变换和Xpath查看)维护保养数据。

在应用软件必须下列作用时应用DataReader:
l 不用缓存数据。
2 已经解决的結果集很大而不可以所有放进运行内存中。
3 必须快速一次性浏览数据,选用只往前的写保护的方法。
留意:当添充DataSet的情况下,DataAdapter应用DataReader。因而应用DataAdapter替代DataSet得到 的性能是节省了DataSet耗费的运行内存和拼装DataSet所必须的周期时间。这类性能的提升 绝大多数是名存实亡的,因而你应该依据必须的作用为基本来做设计方案决策。

应用强类型DataSet的益处
应用DataSet的另一个益处是它能被承继用以创建强类型的DataSet。强类型DataSet的益处包含设计方案时的定期检查强类型DataSet 的Visual Studio .NET句子添充。如果你为DataSet固定不动了考试大纲或关联构造时,就能创建强类型DataSet,把列和行做为目标的特性而不是项的结合。比如,做为曝露消费者表的某一行的字段名的替代,你能曝露Customer目标的 Name特性。强类型的DataSet衍化自DataSet类,因而不容易放弃DataSet的一切作用,换句话说,强类型的DataSet还可以是远程控制的,并做为数据关联控制(比如DataGrid)的数据源出示。假如不清楚考试大纲,也可以根据应用一般的DataSet得到 益处,可是缺失了强类型

DataSet的附加特性
在强类型DataSet中解决空值
应用强类型DataSet时,你可以给DataSet 的XML考试大纲定义语言(XSD)作注释以保证 强类型DataSet恰当的解决空(Null)的引入。空值(nullValue)注解使你可以用String.Empty这一特殊值替代DBNull、维持了空引入、或是造成一个出现异常。挑选在其中的哪一个取决于应用软件的內容,默认设置状况下碰到空引入将造成一个出现异常。

刷新DataSet中的数据
假如你期待应用升级后的值从服务器更新数据集中化的值,应用DataAdapter.Fill。假如主键界定在数据表上,DataAdapter.Fill根据主键搭配新行,并把网络服务器的数据改为已存有的行。被更新行的RowState设定为Unchanged,即便 在更新前它被改动过。留意假如给数据表界定了主键,DataAdapter.Fill加上新行很有可能反复主键值。
假如期待用网络服务器的当今值更新一个表,而且维持表中国银行的更改,你务必优选应用DataAdapter.Fill组成它,添充一个新的数据表,然后将该数据表合拼(Merge)进一个数据集,并把preserveChanges值设成true。

在DataSet中检索数据
在一个数据集中化查看合乎特殊条件的行后,应用根据索引(index-based)的查询表将提升 性能。给数据表特定主键(PrimaryKey)值时,就创建了一个索引。当以数据表创建数据主视图(DataView)时也创建了索引。下边是一些应用根据索引查询的方法:
假如查看是在数据表的主键列上开展的,应用DataTable.Rows.Find替代DataTable.Select。
查看非主键列,能够应用数据主视图来提升 好几个数据查看的速率。当给数据主视图加上排序时,将创建检索时应用的索引。数据主视图曝露了查看下一层数据表的Find和FindRows方式。
假如你并不是查看表的排序主视图,还可以根据为数据表创建数据主视图得到 根据索引的查询表的益处。留意假如你实行数据上的好几个查看它是唯一的益处。假如你只实行单独查看,必须创建索引的全过程将由于应用索引而减少了性能。