[.Net開源分享]DataProvider便捷資料訪問組件

來源:互聯網
上載者:User

引用內容

1    DataProvider綜述

1.1    背景

1.1.1    頭痛的事情

    從無到有的建立資料訪問層
    沒有剝離業務的資料訪問層,開發很容易,維護極困難
    傳統的ADO.NET雖然強大,但是在開發效率和開發難度上並不盡如人意
    資料庫表數量多,關係複雜,資料訪問層工作量非常大
    SQL代碼往往在運行時才發現錯誤,而非期待的編譯階段,影響項目品質
    Debug時一直要追蹤到資料層的SQL語句或預存程序
    SQL雖然強大,但是從物件導向的角度來看,並不是一種高效和易於開發的手段。對新人來說,難以上手,線上問題的即時解決更是困難。

1.1.2    期望的情形

    以面對對象的方式,剝離出統一的資料提供者,把層次間的耦合度降到最低。
    所有笨代碼再也不用自己一行行Key出來
    多種資料庫的支援

1.1.3    呼之欲出

經曆一系列“苦其心智,勞其筋骨”的過程,DataProvider(以下簡稱DP)與PPCoder結伴而來。

1.2    DP是什麼
.Net環境下,資料訪問層的解決方案,包含一個資料訪問組件DataProvider.Dll和一個代碼自動化工具PPCoder。應用於採用多層架構開發的軟體系統。

1.3    DP的特點

    資料訪問層不用寫一行代碼,只需要設計資料庫
    資料庫至少有一種約束:標識、主鍵、唯一
    資料表之間可以配置主外鍵關係,從而實現關聯查詢模式
    支援Sql Server和MS Access資料庫
    使用預存程序與Sql Server 互動,預存程序由PPCoder產生
    兩種資料庫可以無縫切換,在保證結構一致的前提下,只要重建一下實體類即可
    資料操作方法調用簡單
    支援針對資料訪問類的事務
    支援直接下sql語句
    強大的資料查詢功能
    快取資料
    多種查詢限定符:範圍、返回數量、Distinct、關聯查詢、不等於
    返回當前頁:返回指定頁的資料
    多類型返回:DataSet、Reader和DataBox

1.4    DP的好處

    把系統開發簡化成資料庫設計和業務功能的開發,節省人力
    降低系統耦合度,將資料訪問與業務分離,提高項目可維護性
    資料庫結構頻繁改動時,項目不再受資料訪問層的拖累
    支援多種資料庫,提高系統擴充性

2    使用說明
    詳見產品手冊和DataProvider類庫說明
3    Q&A

3.1    功能面

    有點暈,PPCoder和DataProvider是什麼關係?
    DataProvider是個處理資料訪問的中介軟體
    PPCoder是個配合它的協助工具輔助,協助自動產生具有特定結構的實體類(或預存程序)

    DataProvider支援哪些資料庫嗎?
    目前支援Sql Server和MS Access兩種。後續會考慮支援Oracle資料庫。
    DP一個突出的特點就是結構相同的資料庫可以無縫切換。如果目前出於成本和規模的影響使用MS Access作為資料庫,那麼將來想轉化成Sql Server會非常容易。只需要使用PPCoder重建一下實體便可,原有代碼無須任何改動。
3.2    應用面
    使用DP對資料庫設計有什麼特別需求嗎?
    DP要求每張Table中至少有主鍵、標識或唯一鍵中的一個,以便唯一定位到一條資料。另外要特別注意的是產生實體的時候,每一個約束組合都會對應一個建構函式,所以不可以組合出來相同參數格式的約束組合。例如下面的設計是不合法的:定義RowID為主鍵,又定義一個ProductID為唯一鍵
    因為我要操作的資料很大,所以總是報“資料庫逾時”錯誤,有辦法處理嗎?
    逾時是因為預設的SqlCommand的CommandTimeOut為30,而語句執行過程所需要的時間大於此時間,解決此問題的辦法就是在Configration中初始CommandTimeOut為大一些的數字,如果不想設定逾時時間,可以將此值設定為0
    我的資料表關係比較複雜,我如何擷取串表?
    DP有三種辦法可以串出符合相應條件的關係。每種方法應用於不同的情況
    如果只是兩張表之間的串聯關係,可以使用QueryJoin擷取相應的資料,應用此方法需要在產生實體類前在資料庫建立兩張表的關聯關係。
    另外一種自己直接向資料庫中下Sql,然後通過ExecuteSql中的方法來檢索資料。
    還有一方法就是在資料庫中拉出View,然後用PPCoder產生針對此View的實體,DP會把View當作一個普通的表來看待,針對View DP只提供查詢功能,查詢方法與普通表一樣。

3.3    產品面
    DP是石頭裡蹦出來的嗎?
    否,DP是餘波的作品,請多指教。
    更多資訊見http://blog.ppcode.com/article.asp?id=538

    DP不要錢吧?
    完全免費
    連絡方式MSN:ppcode@gmail.com
    QQ:942365

    DP有沒有考慮過開源
    DP已經開源,源碼見下部連結

3.4    技術面
    DP有什麼技術特點
    DP應用了.Net反射技術來對實體進行操作。
    自訂Attribute來記錄欄位資訊。
    PPCoder的產生應用了.Net架構中的CodeDOM
    Sql Server中使用預存程序互動,很大程度上提高了效能
    具體技術細節見類庫說明

開源下載:
應用在.net2.0環境:
DataProvider_Net2.0
DataProvider_Net2.0_Source
coder2.0_net2.0_Source

應用在.net1.x環境:
DataProvider_Net1.x
DataProvider_Net1.x_Source
Coder2.0_Net1.x_Source

 

http://www.cnblogs.com/rexsp/archive/2007/12/04/983568.html

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.