DataRabbit 企業級的數據存取框架(00) -- 序

(最新版本爲DataRabbit 4.0,請到本文末下載處下載。最後更新:2009.09.15)

   DataRabbit支持基於關係(Relation)的數據庫操作和基於ORM的數據庫操作,內置了對Oracle和SqlServer的支持,並且可以通過插件的方式對其它數據庫類型提供支持。DataRabbit中的所有訪問器(都實現了
ITransactionAccesser接口)即可以在事務上下文中訪問數據庫,也可以在非事務中訪問數據庫。使用DataRabbit,幾乎可以避免98%的需要在程序中手寫的Sql語句,這樣,你的程序會更安全,並且更容易修改和維護。

   在正式瞭解DataRabbit之前,也許先讀一下《
DataRabbit的背後(1)-―走進DataRabbit上下文》效果更好,這篇文章爲了解DataRabbit做了一些必要的鋪墊。

1.DataRabbit中的訪問器  
   DataRabbit主要包含以下幾種訪問器:
(1)針對ORM的訪問器(
IOrmAccesser)(及 續篇
(2)針對數據庫的Relation訪問器(
IRelationAccesser
(3)針對Table的Relation訪問器(
ITableAccesser
(4)針對存儲過程的訪問器(
ISPAccesser
(5)基於ORM的對象關係加載器(
IEntityRelationLoader
(6)數據大綱訪問器(
IDataSchemaAccesser

     所有的訪問器都向使用者屏蔽了地層的IDbCommand、IDbConnection等對象,使用者不必再關心打開連接、執行命令、關閉連接等繁瑣底層的操作。這些訪問器都從
ITransactionAccesser接口繼承,它們的類圖如下所示:



   DataRabbit的ORM非常輕量,它具有如下特點:
(1)使用Emit與泛型技術實現ORM訪問器(IOrmAccesser),與手寫SQL的效率幾乎相當。
(2)使用ORM不需要任何配置文件(採用“約定”優於“配置”原則,Entity對象與數據表結構完全一致,可由工具EntityCreator自動生成)
(3)可以將數據庫之間的主從表關係映射爲Entity之間的關係,並可以依據主外鍵來加載Entity。
(4)對數據庫表的結構沒有任何要求。(比如,有的ORM框架要求數據表必須具有主鍵等)

(5)支持高效的“部分更新(partial update)”。

2.大綱操作 

   DataRabbit支持與數據大綱(DataSchema)相關的操作,比如提取某個數據庫表的大綱,或者依據某個大綱創建對應的數據庫表。這可以通過 IDataSchemaAccesser 接口來完成。與大綱操作相關的類圖如下所示:




3.數據分頁
   可以通過IPagerManager接口來進行數據分頁操作(全部採用程序實現,不需要存儲過程的支持)。



4.DataRabbit入口 -- TransactionScopeFactory     

     作爲使用DataRabbit框架的入口點,一個TransactionScopeFactory實例就對應着一個數據庫。

     也可以這麼說,針對一個特定的數據庫,我們的應用只需要維護一個TransactionScopeFactory實例即可。

DataConfiguration config = new DataConfiguration(DataBaseType.SqlServer, "localhost""sa""pwd""TestDB"null);
TransactionScopeFactory transactionScopeFactory 
= new TransactionScopeFactory();
transactionScopeFactory.DataConfiguration 
= config;            
transactionScopeFactory.Initialize();

 

     通過TransactionScopeFactory我們可以獲取TransactionScope對象,而上述的各種訪問器、大綱操作者、分頁管理器等等實例都可以通過TransactionScope中的對應方法獲得。

   比如,獲取針對表Student的ORM訪問器:

IOrmAccesser<Student> stuOrmAccesser = transationScope.NewOrmAccesser<Student>(null);
//獲取所有年齡大於20歲的學生
IList<Student> stuList = stuOrmAccesser.GetMuch(new Filter(Student._Age, 20, ComparisonOperators.Greater));

     關於如何更好的使用DataRabbit框架,可以參考 使用DataRabbit的最佳實踐 一文。

 

5.對N層架構的支持
   DataRabbit如何更好地融合到N層架構中了?如何支持BL層、Data層、BEM層?
(1)TransactionScope,事務範圍,從某個事務返回對象獲取的各種訪問器實例都工作於同一個事務上下文中。TransactionScope實例通常在Business Flow子層中創建。
(2)將DataRabbit融入架構

(3)三層架構中

(4)DataRabbit 對中大型高併發應用的支持

   在後續的文章中,會逐一介紹上面提到的各個DataRabbit組件,下面給出DataRabbit框架的最新版本dll下載,以及一個非常簡單的ORM示例源程序,大家可以仿這段程序嘗試一下DataRabbit的ORM功能。


資源下載:
1.最新版本DataRabbit 4.0下載(內含EntityCreator 和 DataRabbit 完全手冊V3.0 以及最新的Demo源碼)!(最後上傳於 2009.09.15

其它文章:
(1)DataRabbit 3.0 ORM性能大幅度提升!
(2)DataRabbit 3.0 與 Linq to sql 性能比較
(3)Batch Insert 批插入!
(4)實體緩存EntityCache  (2008.05.28)


可以加入QQ羣:37677395  一起探討DataRabbit

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