Database2Sharp代碼生成工具使用心得
Database2Sharp是一款主要用于C#代碼以及數據庫文檔生成的工具,軟件支持Oracle、SqlServer、MySql、Access、Sqlite等數據庫的代碼生成,可以生成各種架構代碼、生成Winform界面代碼、Web界面代碼、導出數據庫文檔、瀏覽數據庫架構、查詢數據、生成Sql腳本等,還整合自定義模板和數據庫信息的引擎,方便編寫自定義模板調試和開發。
1、EnterpriseLibrary架構代碼生成

1.1 代碼生成總體概述
EnterpriseLibrary代碼生成時一個整體性項目代碼的生成操作,他能根據設計好數據庫信息以及模板文件,生成一個完整性非常高的項目。一般結合我的Winform開發框架進行增量式的項目開發,效率更高,而且更多組件模塊的集成,完美的整合,以及模塊化的封裝,能帶給你無窮的開發樂趣同時,使得項目無論從代碼風格、用戶界面、設計理念,都能保持很好的統一,快速優雅的完成碰到的項目。
使用Database2Sharp來生成框架代碼,雖然直接生成的代碼,就是一個整體方案的代碼,基本上可以直接運行。而Winform開發框架和代碼生成工具生成的項目組織上有所不同。下面提供幾個注意的地方。
1)代碼生成工具生成的代碼是基于Project的,而Winform開發框架為了項目數量,方便管理,是把業務層、數據訪問層、數據接口層、實體層放到一個工程項目中了(WCF項目會把實體層獨立作為一個項目處理),因此生成的代碼我們復制到對應的目錄位置就可以了,默認命名空間不需要改動。
2)為了代碼生成方便,代碼生成工具需要把數據庫字段的中文說明作為代碼注釋或者說明的一部分,因此,設計數據庫(SqlServer、Oracle等)的時候,我們強烈要求把注釋添加到字段說明里面去。
3)數據庫表一般需要提供一個主鍵關鍵字(建議取名為ID),主鍵字段可以為自增長的整形類型,也可以是任意字符型。建議SqlServer一般采用自增長整形、Oracle采用Number類型,并為每個表指定一個部分同名的序列名稱,如Seq_ABC,其中ABC代表對應的表名。
1.2 數據庫表設計
由于我們一般的開發過程是,先設計好數據庫,然后生成項目代碼框架,再進行調整完善。因此在開發前,我們非常關鍵的第一步就是要設計好數據庫。
數據庫設計可以采用多種方式進行,但為了提高設計效率以及方便修改等操作,一般我們最好基于數據庫建模軟件進行數據庫的設計過程,如PowerDeigner就是一個很好的數據庫設計平臺。如下圖所示:

當然數據庫設計的時候,也可以指定它們之間的邏輯引用關系,這樣對于數據的完整性校驗比較有保證,如下圖所示。

無論是上面那種設計關系,我們都需要在設計過程中,注意到表字段備注信息,由于在代碼生成工具生成代碼的時候,很多時候需要使用中文的字段名稱來描述,如實體類字段的備注信息、界面的查詢字段說明、列表的表頭提示等等,這些都是從你設計的數據庫表字段備注里面來,因此要特別注意。在PowerDesigner設計軟件里面,只需要指定Comment,然后生成SQL的時候,就會有相關的備注信息了。

1.3 代碼生成參數配置
基于前面設計好了數據庫,生成相關的SQL,然后在數據庫管理系統(Oracle/SqlServer/MySql等)上執行腳本,創建數據庫成功后。就可以利用代碼生成工具進行代碼生成了,但生成代碼前,需要配置幾項參數,以求能夠更完美生成項目工程,實現快速使用。
(一)基礎參數

在上圖我們可以看到,代碼生成工具只需要很少的幾個屬性,就能較好的生成所需的代碼。
主命名空間,就是我們的項目代碼的命名空間的前面基本不變的部分。如實體類的命名空間一般為WHC.TestProject.Entity,那么主命名一般為WHC.TestProject即可,相應界面層生成后的命名空間為WHC.TestProject.UI,業務邏輯層的命名空間為WHC.TestProject.BLL,數據訪問層根據不同的數據庫生成不同的命名空間,如Oracle數據訪問層命名空間為WHC.TestProject.DALOracle,SqlServer數據訪問層命名空間為WHC.TestProject.DALSQL, 而Access數據訪問層命名空間為WHC.TestProject.DALAccess等如此類推。
輸出目錄,顧名思義就是我們代碼最終的生成目錄了。
過濾表名前綴,是減少代碼出現多余的表名前綴。一般在大一些項目上,或者僅僅保持良好的命名習慣上,我們都應該給不同應用范疇的表,通過前綴來進行區分,如我對于基礎類可能用“TB_”前綴來區分,對于權限范疇的可能用“T_ACL_”來區分,其他的可能用“T_”來區分等等。這樣我們在生成代碼的時候,就應該去掉這些多余的前綴,使得我們的業務類更加易讀。如字典大類表名稱為“TB_DictType”,那么對應的業務類生成應該就是“DictType”了。
(二)別名修改
除了以上的幾項設置外,有時候,為了較好調整表名或者字段屬性的名稱,也增加了一項修改別名的功能,如“ABC”的表名我們不知道是什么意思,如果把它的別名修改為“Company”這樣的單詞,一般人可能就知道這個類庫代表的意義了,別名修改就是為了這樣需求而出現的。
別名修改,有表名的別名,和表字段的別名修改兩種,如下所示


1.4 代碼生成
1.4.1 框架介紹
無論是在項目開始階段的全新代碼生成或者在框架搭建起來后(如基于Winform開發框架、WCF開發框架),雖然起點有所不同,但是都是一個框架模式搭建完善相關的業務模塊的。
無論是基于Winform、Webform的開發應用,甚至是基于分布式程序開發的WCF開發模式,利用Database2Sharp都能使你感到事半功倍的成就感,由于它們三者都是在基于EnterpriseLibrary的框架代碼生成基礎上完成的,這個框架模式是通用于上述幾種不同的應用開發框架,它們大致的框架布局如下所示。
Winform開發框架以及Web開發框架,它們就是在BLL業務邏輯層之上搭建一層界面展示層而已,而WCF開發框架則還需要在BLL業務邏輯層之上搭建一層WCF服務層,然后在界面層和WCF服務層之間,通過服務應用的方式,增加一層WCF服務層的代理層,如下所示。
Winform開發框架適用于開發用戶體驗好、功能強大的業務管理系統,可以基于單機版數據庫(如Access、Sqlite等數據庫)或者基于局域網的數據庫,如Oracle、SqlServer、MySql、Mongodb、DB2等網絡型的數據庫應用,也就是我們傳統所說的C/S架構模式。
Web開發,一般也可以開發功能強大的業務管理系統,不過較Winform來講,它的用戶體驗會差一些,而且需要部署在IIS上,部署會比較麻煩一些,但特點是能夠部署分布式的應用,而且不用安裝軟件,直接在IE、Chrome瀏覽器上打開URL連接即可使用,是傳統所說的B/S應用模式。
而WCF開發框架,是利用了C/S應用模式里面的程序良好的界面體驗性、響應快速性等特點,也充分利用了B/S應用模式里面的分布式架構特點,是一種融合前兩種框架特點應用模式,對于要求分布式,有要較好的用戶體驗性,這種框架是很好的選擇。
1.4.2 數據庫連接配置
了解了不同的框架用途,我們就可以利用代碼生成工具來搭建我們所需的業務管理系統了。
第一步,配置對應數據庫連接信息。數據庫SqlServer的配置信息如下所示。

Oracle數據庫配置信息如下所示:

Oracle數據庫除了配置以上信息外,還要注意的是,需要利用NetManager來配置好對應Oracle數據庫名稱的偵聽配置,如下所示。也就是Oracle需要安裝好對應版本的Oracle客戶端,配置好數據庫偵聽信息才能使用代碼生成工具Database2Sharp訪問Oracle數據庫表信息,這樣是一般常規Oracle工具需要做的操作,包括PLSQL Developer。

MySql數據庫配置信息如下所示,注意的是,MySql數據庫一般有一些編碼的設置,為了有效獲取對應數據庫表、字段的備注等中文信息,需要設置正確的字符編碼才能獲取到:

Access數據庫配置信息如下所示,一般情況下,只需要指定Access數據庫路徑即可,如果有密碼,填上數據庫密碼信息。

Sqlite數據庫配置信息如下所示,一般情況下,只需要指定Sqlite數據庫路徑即可。

1.4.3 代碼生成
代碼生成工具,是結合數據庫信息進行代碼生成的過程,因此需要先獲取對應數據庫信息。
第一步,在Database2Sharp左邊的樹形數據庫列表中,單擊展開對應數據庫的詳細表,由于Database2Sharp是一次性加載方式,加載數據庫表的信息同時,也會加載相關的視圖、存儲過程(Oracle、SqlServer)、以及表字段和表之間的關系等等信息。
單擊其中一個表,我們可以看到對應該表的字段信息,以及創建表的SQL語句,也就是我們常說的DDL腳本。

第二步,在數據庫節點上,單擊鼠標右鍵,選擇【代碼生成】- 【EnterpriseLibrary代碼生成】菜單,開始生成代碼如下所示。

第三步,選擇相應的數據庫以及數據庫表,用于代碼的生成。


第四步,設置相關的代碼生成配置信息,包括項目主命名空間,輸出目錄,以及過濾表名前綴等。

第五步,確認代碼生成操作,一般確認,就會對選定的表進行項目代碼的生成操作,生成一體化的整體性解決方案。

如果項目是要生成基于WCF開發框架的,那么勾選“同時生成WCF服務項目”選項即可(工具注冊用戶可用)。
勾選后,可以修改WCF服務的項目名稱,方便創建不同的WCF業務項目。WCF項目是基于VS2010開發環境、.NET4.0框架的項目,這是目前最優的配置信息了。
如果勾選生成后打開解決方案,那么代碼生成完成后,就會自動打開項目工程,你可以嘗試編譯,一般情況下,可以完全編譯通過的。

以上就是我對于代碼生成工具Database2Sharp的一些總結,希望對大家使用Database2Sharp快速開發項目有所幫助。
專注于代碼生成工具、.Net/Python 框架架構及軟件開發,以及各種Vue.js的前端技術應用。著有Winform開發框架/混合式開發框架、微信開發框架、Bootstrap開發框架、ABP開發框架、SqlSugar開發框架、Python開發框架等框架產品。
??轉載請注明出處:撰寫人:伍華聰??http://www.iqidi.com?
????
浙公網安備 33010602011771號