代碼生成工具Database2Sharp的架構介紹

1)代碼生成工具介紹

Database2Sharp是一款代碼生成工具和數據庫文檔生成工具,該工具從2005年開始至今,一直伴隨着咱們的客戶和粉絲們經歷着過各類各樣的項目開發,在實際開發中能帶來效率的提升及編程的快樂。html

Database2Sharp是一款主要用於C#代碼生成以及數據庫文檔生成的工具,軟件支持Oracle、SqlServer、MySql、PostgreSQL、Sqlite、Access以及國產達夢等數據庫的代碼生成,能夠生成各類架構代碼、生成Winform界面代碼、Web界面代碼(包括EasyUI和BootstrapWeb界面)、Entity Framework實體框架代碼、導出數據庫文檔、瀏覽數據庫架構、查詢數據、生成Sql腳本等,還整合自定義模板和數據庫信息的引擎,方便編寫自定義模板調試和開發。生成的框架代碼支持多種數據庫一塊兒使用,也支持不一樣業務的數據庫切割爲多個庫進行使用,是一種適應性很是強、彈性很好的應用框架。sql

Database2Sharp推薦採用軟件功能「Enterprise Library代碼生成」來生成項目代碼,這個架構體系生成整個項目工程框架,包含實體類、數據訪問類、業務類、Web頁面代碼、WCF相關服務層(可選)、Web API服務層(可選),以及各類服務的調用包裝層代碼等。該架構利用泛型及緩存機制,良好的架構極大簡化代碼,強大完善的基類機制使您甚至不用編寫一行代碼就能順利運行。一個簡單點擊幾回鼠標就能完成一週代碼量的代碼生成工具,效率驚人、友好體貼,真正的開發好伴侶。數據庫

固然,開發的過程是一個繁複、精細的過程,所以Database2Sharp也吸取了來自咱們本身的實際需求,以及不少同仁朋友的寶貴意見,一直在改進,一直努力作到更好,以求達到一個更加完美、更加易用的境界。編程

在咱們開發軟件的時候,解決方案項目基於必定的分層組織,每一個項目分層中,各個類的關係也是肯定的,藉助輔助工具(結合模板引擎)能夠快速生成咱們所須要的代碼,並極大提升咱們軟件的開發效率,Database2Sharp代碼生成工具就是一款專門針對咱們本身框架結構配套的開發工具。緩存

Database2Sharp代碼生成工具,主要是基於數據庫提取的元數據信息,根據表的信息和關係,字段信息等內容,生成咱們框架所須要分層的類代碼。架構

對於Winform開發,能夠根據Winform框架或者混合框架的窗體界面類,生成標準的界面代碼,列表界面默認具備分頁查詢、導入導出、高級查詢、編輯、刪除事件綁定,編輯界面則具備獲取數據並顯示在控件,保存後執行更新或者寫入的操做。框架

對於Web開發,能夠根據EasyUI控件界面或者Bootstrap控件界面的不一樣,生成對應的視圖HTML代碼和控制器類代碼,同時這些界面默認也具備分頁查詢,導入導出,顯示明細和保存數據的功能。工具

2)軟件功能界面及項目結構

軟件主要界面以下所示。開發工具

軟件功能界面如上圖所示,左側爲數據庫信息展現,右側爲表信息或者代碼信息展現,主要功能經過左側樹上的右鍵或者界面按鈕實現。編碼

代碼生成工具的項目結構以下所示。

 

其中各個項目負責的內容不一樣,分爲數據核心模塊、配置文件模塊、Winform項目模塊、Web項目模塊、混合框架項目模塊、數據庫腳本項目模塊、EF實體框架項目模塊、數據庫文檔模塊,以下圖所示。

 

根據實際生成代碼的須要,咱們能夠進一步擴展應用模塊,利用底層數據庫元數據和模板引擎,從而生成更多的項目模板代碼。

 

3)元數據對象及層級關係

其中WHC.CodeGenerator.Core項目是元素獲取處理的核心模塊,它主要負責從不一樣數據庫類型的數據庫中獲取相關庫的表信息、字段信息、存儲過程和視圖信息等內容。

其中各個對象的層級關係以下所示:每一個數據庫實例,包含多個數據庫信息,一個數據庫對象包括多個表、多個視圖、多個存儲過程對象,一個表則包含多個字段對象,而每一個字段可能包含一個到多個Key對象信息,如外鍵、主鍵信息等。

代碼生成工具支持幾種不一樣的數據庫元素獲取,數據庫元素的獲取經過實現IListData接口,從而支持多種數據庫類型,包括MS SQLServer、Oracle、Mysql、PostgreSQL、SQLite、Access等數據庫,他們從Database基類擴展,造成本身數據庫特色的子類,如SQLServer、Mysql類,數據庫的操做也是基於Enterprise Library數據庫訪問模塊實現的。繼承關係以下所示。

 

 

 4)工具界面嚮導功能介紹

 代碼生成工具裏面,咱們生成代碼的時候,通常須要選擇哪一個庫,而後選擇表,以及一些配置項,才能進行代碼的生成,這個是一個配置嚮導的功能,主要是基於Microsoft.ApplicationBlocks.UIProcess 組件進行的一個動態配置(UIProcess是微軟早期的一個界面管理組件),它是讀取配置文件進行的界面處理。以下面是App.config配置文件的內容。

其中每一個View表明一個配置一個嚮導界面,如SelectDatabaseView,它對應一個控制器SimpleController。

另外,配置文件的navigationGraph是一個配置型的導向,主要配置咱們處理的場景,詳細配置以下所示。

 

和這些導航圖的配置信息對應,咱們代碼生成工具也須要提供對應名稱的窗體,以下圖所示。這些窗體就是咱們操做某個代碼生成過程的操做界面,如選擇數據庫界面,選擇表界面,確認生成功能界面等。

 

 另外配置文件裏面會定義咱們一組處理的導航窗體,用來構建咱們一個業務場景,如EnterpriseLibrary架構代碼生成操做。

 

而後咱們在界面須要定義一個按鈕,實現這個代碼生成功能的時候,只須要調用這組視圖的名稱便可,以下代碼所示。

這樣啓動後,整個處理導航邏輯就會按照配置文件的順序一個個調用界面,最後統一輩子成代碼便可。

5)自定義模板代碼生成

代碼生成工具是基於比較有名的NVelocity模板進行代碼文件生成的,所以熟悉NVelocity語法能夠修改模板,以適應須要,生成不一樣內容的文件。

除了能夠利用NVelocity模板語法,實現變量定義或者賦值、控制邏輯處理等功能外,還能夠利用模板和後臺變量進行交互處理。

模板引擎的後臺控制規則是在代碼生成工具裏面封裝的,所以能夠在NVelocity模板文件裏面訪問對應的數據庫對象,選擇的表對象、字段信息等元素內容,或者訪問自定義的變量。

基於模板方式的代碼生成方式,能夠提升生成效率,而且減小維護成本(相對某些硬編碼代碼生成的方式更優),方便用戶對模板進行適當的修改等特色。

關於NVelocity模板語法,詳細介紹能夠參考伍華聰博客《強大的模板引擎開源軟件NVelocity》隨筆。

在實際開發當中,自定義模板生成是不少代碼生成工具生成代碼的重要補充,例若有些項目代碼片斷須要(例如控件賦值語句,或者控件數據顯示語句等),若是能經過自定義模板方式,利用模板引擎的靈活特色,以及已有數據庫的結構信息,就很方便生成重複性強、有必定規律的代碼。

用【選表進行代碼生成】方式,能夠很好利用後臺的數據庫表、字段等信息,結合模板生成高效的代碼。

 另外,爲了方便你們對模板引擎NVelocity的瞭解,在軟件工具安裝的時候,附帶了幾個常見的例子,以下所示。

例子的代碼大體以下所示,主要是讓你們快速瞭解Nvelocity的模板語言VTL的使用。若是對模板引擎更加深刻的瞭解,能夠查看我以前的隨筆《強大的模板引擎開源軟件NVelocity》進一步瞭解。

相關文章
相關標籤/搜索