在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。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章