在上篇《基於Enterprise Library的Winform開發框架實現支持國產達夢數據庫的擴展操做》介紹瞭如何在Enterprise Library的數據訪問層上支持這種神祕的國產數據庫-達夢數據庫。本文繼續這一主題,介紹產達夢數據庫的結合Enterprise Library的應用開發。html
達夢數據庫管理系統是達夢公司推出的具備徹底自主知識產權的高性能數據庫管理系統,簡稱DM。達夢數據庫管理系統的最新版本是7.0版本,簡稱DM7。DM7提供對SQL92的特性支持以及SQL99的核心級別支持;支持多種數據庫開發接口,包括OLE DB、ADO、ODBC、OCI、JDBC、Hibernate、PHP、PDO、DB Express以及.Net DataProvider等。sql
達夢數據庫能夠在(http://www.dameng.com/)上下載試用,安裝好後提供不少管理工具,安裝後可讓它建立一些實例數據庫,以方便咱們瞭解數據庫的基本操做。數據庫
達夢數據庫安裝後,在系統開始菜單裏面有一些管理工具和PDF文件連接,以下所示。有時間建議閱讀下用戶手冊裏面的幾個文件,裏面的文檔寫的仍是很詳細,覆蓋數據庫管理操做、數據庫編程開發、數據庫語法幾部分的內容。編程
在Winform開發框架中,在框架源碼目錄DatabaseDx裏面,提供了一個達夢數據庫的備份文件(Winframwork.dmp),裏面包含了框架所需的表和數據,使用框架前還原(導入)數據庫便可。操做方法是在「DM管理工具」界面裏面,左邊的模式樹上面右鍵出現【導入】功能,而後選擇導入數據庫操做,界面以下所示。架構
單擊【導入】功能後,在彈出的界面上,選擇對應的目錄和數據庫備份文件,並輸入須要的模式名稱便可,界面操做以下所示。框架
還原(導入)達夢數據庫後,刷新模式樹列表,則會在左邊的模式看到新導入的數據庫相關信息。ide
基於Enterprise Library的開發框架,底層使用了微軟的數據訪問組件Enterprise Library,以適應多種數據庫類型的操做,它的分層以下所示,每一個DAL層(如DALSQL、DALOracle等)都提供了對應數據庫的實現,界面層一下的分層圖以下所示。工具
若是增長多一種數據庫,那麼咱們增長多一個Enterprise Library的組件擴展類,並在業務數據模塊裏面增長對應的DAL層便可。post
Enterprise Library實現其餘數據庫的支持,須要增長一個組件擴展類,如EntLibContrib.Data.SQLite是用來支持SQLite數據庫的,EntLibContrib.Data.MySql是用來支持Mysql的,這個擴展類的內容也很少,主要是用來解析Enterprise Library擴展的配置內容的。性能
在開發框架裏面的啓動程序或者WCF服務裏面的Web.Config配置文件,咱們看到以下的配置信息。
在配置文件裏面,我添加了一、二、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這個屬性前綴。
因爲本文主要介紹如何整合達夢數據庫,開發基於達夢數據庫的業務應用,所以將重點介紹如何基於這個數據庫進行的框架代碼生成。
因爲整個Enterprise Library的開發框架,在業務層及UI層,是不涉及具體的數據庫處理的,所以這些特性讓它可以很好提供多數據庫的支持,咱們基於這個原則,通常也不要打破這個約定,不要在UI層或者BLL層使用特定數據庫的SQL。
爲了快速開發框架代碼,提供兩種方式供快速生成數據訪問層的代碼,一種是基於其餘數據庫訪問層的複製並修改處理,另外一種是全新的數據訪問層生成。前者是在其餘數據訪問層已經完成的狀況下,能夠快速複製並修改便可。後者這是開始增量開發業務,在代碼生成工具Database2Sharp支持的基礎上進行代碼生成。
因爲不一樣的數據庫支持,是建立不一樣的數據訪問層,如達夢數據庫的數據訪問層,通常爲DALDm,以下圖所示就是字典模塊中的數據訪問層代碼。
上面咱們看到,達夢數據庫的數據訪問層它的命名空間爲WHC.Dictionary.DALDm這樣的格式,前面部分爲主命名空間,後面部分基本爲約定的名稱DALDm;而這個DictType數據訪問類的基類這是繼承了達夢數據庫的數據訪問基類BaseDALDm,這個作法和其餘數據庫相似。
咱們看到,這個內容和SQLServer的數據訪問層基本相同的,SQLServer的數據訪問層代碼以下所示。
對比咱們能夠看到,他們之間基本上同樣的,若是咱們在已經開發好了一種數據類型的實現基礎上,在進行另一種數據訪問層的代碼開發,咱們就能夠這樣快速操做實現代碼的複製、修改。
(1) 在VS裏面按住Ctrl按鍵,並用鼠標進行拖動,複製一份副本,修改目錄爲DALDm。
(2) 在VS裏面,關閉所有代碼窗口,把複製生成的文件所有打開。
(3) 替換DALSQL爲DALDm,這樣每一個類裏面會替換兩次內容,實現命名空間和基類名稱的統一替換。
(4) 調整其餘層對DALDm的引用關係。
從新編譯代碼便可。
這種方式的代碼生成,須要在代碼生成工具裏面,選擇Enterprise Library架構生成,生成的代碼把它們逐一複製到對應的目錄,並調整相關的引用關係便可。
具體能夠參考代碼生成工具Database2Sharp的操做說明。