剖析解讀ADO.NET構造相關問題
ADO.NET構造開發內容包括:更容易的設計集成、擴充的部署選項、更為豐富多彩的登錄和個性化服務以及更好的數據訪問和同步,為此我也苦惱很久,后來終于讓我找到了解決辦法。
ADO.NET構造使用強類型DataSet的好處
ADO.NET構造的另一個好處是可被繼承以創建一個強類型DataSet。強類型DataSet的好處包括設計時類型檢查,以及Microsoft Visual Studio.NET用于強類型DataSet語句結束所帶來的好處。修改了DataSet的架構或關系結構后,就可以創建一個強類型DataSet,將行和列作為對象的屬性公開,而不是作為集合中的項公開。例如,不公開客戶表中行的姓名列,而公開Customer對象的Name屬性。
類型化DataSet從DataSet類派生,因此不會犧牲DataSet的任何功能。也就是說,ADO.NET構造類型化DataSet仍能遠程訪問,并作為數據綁定控件(例如DataGrid)的數據源提供。如果架構事先不可知,仍能受益于通用DataSet的功能,但卻不能受益于強類型DataSet的附加功能。#t#
處理強類型DataSet中的空引用
使用強類型DataSet時,可以使用DataSet的XML架構定義語言(XSD)架構來確保強類型DataSet可以正確處理空引用。nullValue標識符使您可用一個指定的值String.Empty代替DBNull、保留空引用或引發異常。選擇哪個選項取決于應用程序的上下文。默認情況下,ADO.NET構造如果遇到空引用,就會引發異常。
刷新DataSet中的數據
如果想用服務器上的更新值刷新DataSet中的值,就使用DataAdapter.Fill。如果有在DataTable上定義的主鍵,DataAdapter.Fill會根據主鍵進行新行匹配,并且當更改到現有行時應用服務器上的值。即使刷新之前修改了這些數據,ADO.NET構造刷新行的RowState仍被設置為Unchanged。注意,如果沒有為DataTable定義主鍵,DataAdapter.Fill就用可能重復的主鍵值添加新行。 #t#
如果想用來自服務器的當前值刷新表,并同時保留對表中的行所做的任何更改,必須首先用DataAdapter.Fill填充表,并填充一個新的DataTable,然后用preserveChanges值true將DataTable合并到DataSet之中。
在DataSet中搜索數據
在DataSet中查詢與特定條件相匹配的行時,ADO.NET構造可以利用基于索引的查找提高搜索性能。當將PrimaryKey值賦給DataTable時,會創建一個索引。當給DataTable創建DataView時,也會創建一個索引。下面是一些利用基于索引進行查找的技巧。