(最新版本為DataRabbit 3.2,請到本文末下載處下載。最後更新:2008.11.20)
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)三層架構中使用DataRabbit的最佳實務
在後續的文章中,會逐一介紹上面提到的各個DataRabbit組件,下面給出DataRabbit架構的最新版本dll下載,以及一個非常簡單的ORM樣本來源程式,大家可以仿這段程式嘗試一下DataRabbit的ORM功能。
資源下載:
1.最新版本DataRabbit 3.2下載(內含EntityCreator)!注意,從3.2版本開始,DataRabbit由3個dll合成1個了。V3.2相容V3.1(最後上傳於 2008.11.20)
2.DataRabbit 完全手冊V1.0
其它文章:
(1)DataRabbit 3.0 ORM效能大幅度提升!
(2)DataRabbit 3.0 與 Linq to sql 效能比較
(3)Batch Insert 批插入!
(4)實體緩衝EntityCache (2008.05.28)
轉自http://www.cnblogs.com/zhuweisky/archive/2007/03/19/680013.html