國產達夢數據庫的結合Enterprise Library的應用開發


在上篇《基於Enterprise Library的Winform開發框架實現支持國產達夢數據庫的擴展操作》介紹了如何在Enterprise Library的數據訪問層上支持這種神秘的國產數據庫-達夢數據庫。本文繼續這一主題,介紹產達夢數據庫的結合Enterprise Library的應用開發。

1、達夢數據庫還原處理

達夢數據庫管理系統是達夢公司推出的具有完全自主知識產權的高性能數據庫管理系統,簡稱DM。達夢數據庫管理系統的最新版本是7.0版本,簡稱DM7。DM7提供對SQL92的特性支持以及SQL99的核心級別支持;支持多種數據庫開發接口,包括OLE DB、ADO、ODBC、OCI、JDBC、Hibernate、PHP、PDO、DB Express以及.Net DataProvider等。

達夢數據庫可以在(http://www.dameng.com/)上下載試用,安裝好后提供很多管理工具,安裝后可以讓它創建一些實例數據庫,以方便我們了解數據庫的基本操作。

達夢數據庫安裝后,在系統開始菜單里面有一些管理工具和PDF文件鏈接,如下所示。有時間建議閱讀下用戶手冊里面的幾個文件,里面的文檔寫的還是很詳細,覆蓋數據庫管理操作、數據庫編程開發、數據庫語法幾部分的內容。

在Winform開發框架中,在框架源碼目錄DatabaseDx里面,提供了一個達夢數據庫的備份文件(Winframwork.dmp),里面包含了框架所需的表和數據,使用框架前還原(導入)數據庫即可。操作方法是在“DM管理工具”界面里面,左邊的模式樹上面右鍵出現【導入】功能,然后選擇導入數據庫操作,界面如下所示。

單擊【導入】功能后,在彈出的界面上,選擇對應的目錄和數據庫備份文件,並輸入需要的模式名稱即可,界面操作如下所示。

還原(導入)達夢數據庫后,刷新模式樹列表,則會在左邊的模式看到新導入的數據庫相關信息。

 

2、開發應用的擴展整合

基於Enterprise Library的開發框架,底層使用了微軟的數據訪問組件Enterprise Library,以適應多種數據庫類型的操作,它的分層如下所示,每個DAL層(如DALSQL、DALOracle等)都提供了對應數據庫的實現,界面層一下的分層圖如下所示。

如果增加多一種數據庫,那么我們增加多一個Enterprise Library的組件擴展類,並在業務數據模塊里面增加對應的DAL層即可。

Enterprise Library實現其他數據庫的支持,需要增加一個組件擴展類,如EntLibContrib.Data.SQLite是用來支持SQLite數據庫的,EntLibContrib.Data.MySql是用來支持Mysql的,這個擴展類的內容也不多,主要是用來解析Enterprise Library擴展的配置內容的。

 

3、擴展支持的配置參數

在開發框架里面的啟動程序或者WCF服務里面的Web.Config配置文件,我們看到如下的配置信息。

在配置文件里面,我添加了1、2、3個步驟,第1步是指達夢數據庫的連接字符串,這個是基於Enterprise Library的連接參數內容,由於Enterprise Library默認並不支持達夢數據庫的,是通過其擴展模塊EntLibContrib.Data.Dm進行支持的,因此需要在第2步里面指定具體的擴展對象和程序集信息;最后為了在框架里面知道具體的數據庫類型,在第3步增加了一個ComponentDbType的配置信息,用來確定是哪種數據庫類型(因為框架支持多種數據庫,需要明確類型,方便構建不同的查詢語句語法)。

最后提及的是第3步里面的DM_Schema是達夢數據庫的配置參數,因為達夢數據庫需要指定具體的表的模式前綴。指定了這個參數,我們在數據庫模塊里面的表名,就可以統一使用這個配置的【模式】名稱了,如我們可以在DALDm數據訪問層里面,使用這個this.Schema的屬性,這個屬性的值就是通過上面的DM_Schema配置獲取的。

當然,我們已經在數據訪問層里面,為tableName增加了數據庫模式前綴(相當於Schema.TableName);如果在DALDm層里面,使用了this.tableName這個參數,那么它已經內置包含了數據庫模式的前綴,所以不需要在使用tableName的時候,還顯示的增加模式的值,具體正確使用如下所示。

也就是說,如果使用this.tableName這個參數,那么當前表就不用增加模式前綴,否則為表名增加this.Schema這個屬性前綴。

 

4、如何開發支持達夢數據庫的應用

由於本文主要介紹如何整合達夢數據庫,開發基於達夢數據庫的業務應用,因此將重點介紹如何基於這個數據庫進行的框架代碼生成。

由於整個Enterprise Library的開發框架,在業務層及UI層,是不涉及具體的數據庫處理的,因此這些特性讓它能夠很好提供多數據庫的支持,我們基於這個原則,一般也不要打破這個約定,不要在UI層或者BLL層使用特定數據庫的SQL。

為了快速開發框架代碼,提供兩種方式供快速生成數據訪問層的代碼,一種是基於其他數據庫訪問層的復制並修改處理,另一種是全新的數據訪問層生成。前者是在其他數據訪問層已經完成的情況下,可以快速復制並修改即可。后者這是開始增量開發業務,在代碼生成工具Database2Sharp支持的基礎上進行代碼生成。

1)基於其他數據庫訪問層的復制處理

由於不同的數據庫支持,是創建不同的數據訪問層,如達夢數據庫的數據訪問層,一般為DALDm,如下圖所示就是字典模塊中的數據訪問層代碼。

上面我們看到,達夢數據庫的數據訪問層它的命名空間為WHC.Dictionary.DALDm這樣的格式,前面部分為主命名空間,后面部分基本為約定的名稱DALDm;而這個DictType數據訪問類的基類這是繼承了達夢數據庫的數據訪問基類BaseDALDm,這個做法和其他數據庫類似。

我們看到,這個內容和SQLServer的數據訪問層基本相同的,SQLServer的數據訪問層代碼如下所示。

對比我們可以看到,他們之間基本上一樣的,如果我們在已經開發好了一種數據類型的實現基礎上,在進行另外一種數據訪問層的代碼開發,我們就可以這樣快速操作實現代碼的復制、修改。

(1)  在VS里面按住Ctrl按鍵,並用鼠標進行拖動,復制一份副本,修改目錄為DALDm。

(2)  在VS里面,關閉全部代碼窗口,把復制生成的文件全部打開。

(3)  替換DALSQL為DALDm,這樣每個類里面會替換兩次內容,實現命名空間和基類名稱的統一替換。

(4)  調整其他層對DALDm的引用關系。

重新編譯代碼即可。

 

2)全新的數據訪問層生成

這種方式的代碼生成,需要在代碼生成工具里面,選擇Enterprise Library架構生成,生成的代碼把它們逐一復制到對應的目錄,並調整相關的引用關系即可。

具體可以參考代碼生成工具Database2Sharp的操作說明。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM