在DataSet和DataReader之间选择

刚刚在  ASP.NET 2.0数据库入门经典  的连载中看到的,摘录如下部分: 

需要权衡性能、表示方面的功能以及是否使用缓存等几方面,表3-2中对此进行了总结。会有很多种情况发生,但是在最常见的情况下,DataReader将比DataSet快,并且在IIS服务器上使用非常少的内存。按照一般的规则,当数据源控件只填充列表或数据绑定控件,而且这种列表或数据绑定控件不需要进行缓存、分页和动态排序的时候,应该使用DataReader。如果数据绑定控件将提供记录的排序或分页,也应该使用DataReader,在这种情况下,将需要接受使用DataSet的成本(在DataSourceMode没有显式设置时,为默认值)。如需获得更多关于分页和排序行为的信息,请参阅第7章。最后,对于缓存情况,如同第17章中所描述,需要使用DataSet。
表  3-2
优    点
注 意 事 项
DataReader
较为快速
不支持缓存、分页和动态排序
DataSet
支持缓存、排序和分页
较慢
在如下的“试一试”中将看到这些区别。
试一试 #4—— 设置DataSet和DataReader的SqlDataSource DataSourceMode
在这个简短的练习中,针对绑定到DropDownList的SqlDataSource,将设置数据源模式为DataReader。然后,将添加GridView并看到分页将在其数据源控件从DataSet(默认值)改为DataReader模式时失败。这里没有深入讨论分页和排序,但在第1章的第一个演示中涉及到分页和排序。
(1) 创建名为TIO-0304-DataMode-1.aspx的页面。在Design视图中,拖放一个DropDownList控件至页面。选择Data Source,然后选择New,并且设置其为使用在本章前面的试一试“在Web.config中保存连接字符串”中创建的MdfNorthwind连接。这一次使用Shippers表以及ShipperID和CompanyName。返回到DropDownList向导中,设置显示CompanyName的字段和显示ShipperID值的字段。
因为这种信息几乎不会改变,只需要尽可能快地将其放入页面中。选择数据源控件,在Properties窗口中(如果Properties窗口不可见,则按F4键)将DataSourceMode属性改为DataReader。运行该页面,然而现在还不能够感觉到DataReader的快速。
(2) 现在将演示一种错误,这种错误来源于DataSourceMode属性和在GirdView控件中使用分页功能之间的不匹配。将一个GridView控件拖放到页面上,配置Data Source为新的数据库,保留SqlDataSource2的默认名。使用MdfNorthwind连接,选择名为Products的表以及表中的ProductID和Name字段。单击Next按钮,然后单击Finish按钮。默认情况下,SqlDataSource控件为DataSet模式。
选中GridView,在通用任务面板中启用分页。保存,运行,并且在浏览器中观察到页面加载没有任何问题,GridView中的分页正确工作。
(3) 关闭浏览器,返回到VWD设计模式中的页面。选择SqlDataSource2控件,并且查看Properties窗口。查找DataSourceMode(在Designer组下),双击它,将选项改为DataReader。将该页面保存为TIO-0304-DataMode-2,并且在浏览器中查看页面时,请注意出现的错误。
示例说明 #4——设置DataSet和DataReader的SqlDataSource DataSourceMode
DataReader速度更快。但是,SqlDataSource在使用DataReader模式时并不支持分页或者排序。因为对于DropDownList来说,将数据快速提供给相对静态控件的能力是理想的情况,在第(1)步中将列表的数据源控件设置为DataReader。在第(2)步中,可以看到默认数据模式为DataSet。当切换至DataReader后,分页将失败。请注意在很多时候还是需要使用DataReader模式,例如快速地填充ListBox或者BulletedList。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值