首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

Effective C# 原則 41:選擇 DataSet 而非自訂資料結構 (下)

     編輯:關於C語言

自訂集合實作完整繫結功能的代價

為支援 IEditableObject(交易)、IDataErrorInfo(驗證),需在 AddressRecord 維護永久/暫存資料雙份、錯誤雜湊表、容器參考,程式碼極其冗長(數頁)。且仍缺乏 IBindingList(排序、搜尋、列表變更通知)等介面,實作難度極高。

DataSet 內建完整功能

DataSet 原生支援:

  • 取消編輯(Esc 鍵還原)
  • 欄位驗證事件(ColumnChanged)
  • 錯誤標記(SetColumnError、RowError)
  • 排序、搜尋、複雜導覽

範例:


ds.Tables["Addresses"].ColumnChanged += ds_ColumnChanged;
private void ds_ColumnChanged(object sender, DataColumnChangeEventArgs e)
{
    if (e.Column.ColumnName == "State")
    {
        string v = e.ProposedValue.ToString();
        if (v.Length != 2) e.Row.SetColumnError(e.Column, "State abbreviation must be two letters");
        else e.Row.SetColumnError(e.Column, "");
    }
}

結論

除非極度效能敏感或需極輕量格式,否則應優先使用型別化 DataSet。雖可能違背純 OO 設計,但開發效率遠勝手寫優美程式碼。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved