.NET 数据访问架构指南9

时间:2010-02-01 10:02:24  来源:第二电脑网  作者:第二电脑网

  第二电脑网导读:enumerable接口。许多能进行数据绑定的WinForm控件需要实现了Ilist接口的数据源。         这种不同是因为为每种对象类型设计的场景类型不同。DataSet (它包含 DataTable)是一个丰富的、非链接结构,它适合于Web和桌面(WinForm)应用程序。另一方面,数据阅读器已经为Web应用程序进行了优化,这种应用程序需要优化的、只能向前的数据访问。 &nb...
  正文:数据绑定
  
     所有这三个对象都可以作为数据绑定控件的数据源。而DataSet 和 DataTable 可作为更广范围控件的数据源。这是因为DataSet 和 DataTable 实现了(生成Ilist接口)IlistSource接口,而SqlDataReader 实现了Ienumerable接口。许多能进行数据绑定的WinForm控件需要实现了Ilist接口的数据源。
  
     这种不同是因为为每种对象类型设计的场景类型不同。DataSet (它包含 DataTable)是一个丰富的、非链接结构,它适合于Web和桌面(WinForm)应用程序。另一方面,数据阅读器已经为Web应用程序进行了优化,这种应用程序需要优化的、只能向前的数据访问。
  
     检查将要绑定到的特定控件类型的数据源需求。
  
     在应用程序层间传递数据
  
     DataSet提供了可作为XML被任意操纵数据的关系图,并允许数据的非链接缓存拷贝在应用程序层与组件间传递。然而,SqlDataReader提供了更优化的性能,因为它避免了与创建DataSet相关的性能及内存开销。记住,DataSet对象的创建将导致多个子对象--包括DataTable, DataRow 和DataColumn--及作为这些子对象容器的集合对象的创建。
  
     使用DataSet
  
     使用SqlDataAdapter填充的DataSet对象,当:
   你需要非链接的驻留内存的缓存数据,以便你能将它传递到其它组件或应用程序中的其它层。
  
  
   你需要内存中的数据关系图以执行XML或非XML操作。
  
  
   你正在使用的数据来自多个数据源,如多个数据库、表或文件。
  
  
   你希望更新获得的一些或所有行,并希望利用SqlDataAdapter的批更新功能。
  
  
   你要对控件绑定数据,而此控件需要支持IList接口的数据源。
     更多信息
  
     如果使用SqlDataAdapter生成DataSet 或 DataTable,需注意:
   不必明确打开或关闭数据库链接。SqlDataAdapter Fill方法打开数据库链接,并在此方法返回前关闭该链接。如果链接原来已经打开,那么此方法仍使链接处于打开状态。
  
  
   如果出于其它目的需要链接,那么考虑在调用Fill方法前打开链接。这样你就可以避免不必要的打开/关闭操作,提高性能。
  
  
   尽管能重复使用同一SqlCommand对象多执行同样的命令,但不要重复使用此对象执行不同的命令。
     使用SqlDataReader
  
     些劣情况,可以使用通过调用 SqlCommand 对象的ExecuteReader方法得到的SqlDataReader对象:
   正在处理大量数据时--太多了而不能在单个缓冲区内维护。
  
  
   希望减少应用程序在内存中的印迹。
  
  
   希望避免与DataSet对象创建相关的开销。
  
  
   希望对某控件执行数据绑定操作,而此控件支持实现了IEnumerable接口的数据源。
  
  
   希望流水线化数据访问,并对其优化。
  
  
   正在读取包含二进制大对象(BLOB)列的行。你可以使用SqlDataReader对象以可管理的大块为单位从数据库中将BLOB数据拉出来,而不是一次性地将所有数据提取出来。关于处理BLOB数据的更多细节,见本文处理BLOBs一节。
     更多信息
  
     如果使用SqlDataReader对象,请注意:
   在数据阅读器活动期间,底层的数据库链接保持打开,并不能用于其它任何目的。尽可能早地对SqlDataReader对象调用Close方法。
  
  
   每个链接只能有一个数据阅读器。
  
  
   通过向ExecuteReader方法传递CommandBehavior.CloseConnection枚举值,可以在使用完数据阅读器后,明确地关闭链接;或者,将链接生命周期绑定到SqlDataReader对象。这预示着当SqlDataReader对象关闭时,链接也将关闭。
  
  
   在利用阅读器访问数据时,如果你知道列的底层数据类型,那么就应使用类型化存取器方法(如GetInt32 和 GetString),这是因为在读取列数据时,这些方法减少了读取列数据所需的类型转换量。 《.NET 数据访问架构指南9》由第二电脑网原创提供,转载请注明:http://www.002pc.com/master/College/Programming/aspnet/12697.html


关键字:

关于《.NET 数据访问架构指南9》文章的评论

站内搜索: 高级搜索

热门搜索: Windows style 系统 tr IP QQ CPU 安装 function 注册 if td