由於我們開發的輔助工具Database2Sharp需要支持多種資料庫,雖然我們一般使用SQLServer來開發應用較多,但是Oracle等其他資料庫也是常用的資料庫之一,因此也是支持使用Oracle等資料庫進行代碼的快速生成。在此之前我一直要求用戶使用代碼生成工具的時候,如果使用Oracle開發,則... ...
由於我們開發的輔助工具Database2Sharp需要支持多種資料庫,雖然我們一般使用SQLServer來開發應用較多,但是Oracle等其他資料庫也是常用的資料庫之一,因此也是支持使用Oracle等資料庫進行代碼的快速生成。在此之前我一直要求用戶使用代碼生成工具的時候,如果使用Oracle開發,則需在開發環境中安裝Oracle客戶端,以便繼續利用微軟的System.Data.OracleClient方式訪問Oracle,不過這樣開發環境就會麻煩一些。另外還帶來一個問題,使用這些驅動的時候,由於系統的限制,還會區分32位或者64位的問題,不能實現相容性的訪問。為了徹底解決這個問題,我們使用ODP.NET(Oracle.ManagedDataAccess.dll)訪問Oracle資料庫,實現免安裝Oracle客戶端,相容32位64位Oracle驅動。
1)代碼生成工具介紹
Database2Sharp是一款代碼生成工具和資料庫文檔生成工具,該工具從2005年開始至今,一直伴隨著我們的客戶和粉絲們經歷著過各種各樣的項目開發,在實際開發中能帶來效率的提高及編程的快樂。
Database2Sharp是一款主要用於C#代碼生成以及資料庫文檔生成的工具,軟體支持Oracle、SqlServer、MySql、PostgreSQL、Sqlite、Access以及國產達夢等資料庫的代碼生成,可以生成各種架構代碼、生成Winform界面代碼、Web界面代碼(包括EasyUI和BootstrapWeb界面)、Entity Framework實體框架代碼、導出資料庫文檔、瀏覽資料庫架構、查詢數據、生成Sql腳本等,還整合自定義模板和資料庫信息的引擎,方便編寫自定義模板調試和開發。生成的框架代碼支持多種資料庫一起使用,也支持不同業務的資料庫切割為多個庫進行使用,是一種適應性非常強、彈性很好的應用框架。
Database2Sharp推薦採用軟體功能“Enterprise Library代碼生成”來生成項目代碼,這個架構體系生成整個項目工程框架,包含實體類、數據訪問類、業務類、Web頁面代碼、WCF相關服務層(可選)、Web API服務層(可選),以及各種服務的調用包裝層代碼等。該架構利用泛型及緩存機制,良好的架構極大簡化代碼,強大完善的基類機制使您甚至不用編寫一行代碼就能順利運行。一個簡單點擊幾次滑鼠就能完成一周代碼量的代碼生成工具,效率驚人、友好體貼,真正的開發好伴侶。
當然,開發的過程是一個繁複、精細的過程,因此Database2Sharp也吸收了來自我們自己的實際需求,以及很多同仁朋友的寶貴意見,一直在改進,一直努力做到更好,以求達到一個更加完美、更加易用的境界。
在我們開發軟體的時候,解決方案項目基於一定的分層組織,每個項目分層中,各個類的關係也是確定的,藉助輔助工具(結合模板引擎)可以快速生成我們所需要的代碼,並極大提高我們軟體的開發效率,Database2Sharp代碼生成工具就是一款專門針對我們自己框架結構配套的開發工具。
Database2Sharp代碼生成工具,主要是基於資料庫提取的元數據信息,根據表的信息和關係,欄位信息等內容,生成我們框架所需要分層的類代碼。
對於Winform開發,可以根據Winform框架或者混合框架的窗體界面類,生成標準的界面代碼,列表界面預設具有分頁查詢、導入導出、高級查詢、編輯、刪除事件綁定,編輯界面則具有獲取數據並顯示在控制項,保存後執行更新或者寫入的操作。
對於Web開發,可以根據EasyUI控制項界面或者Bootstrap控制項界面的不同,生成對應的視圖HTML代碼和控制器類代碼,同時這些界面預設也具有分頁查詢,導入導出,顯示明細和保存數據的功能。
軟體主要界面如下所示。
2、代碼生成工具中使用ODP.NET(Oracle.ManagedDataAccess.dll)訪問Oracle資料庫
首先通過Nugget程式包下載一個Oracle.ManagedDataAccess.dll的文件,然後進行使用即可,經過測試使用這個類庫,可以無視資料庫系統的位數,最重要的是減少了Oracle客戶端的安裝。
為了和原有的系統支持的OracleClient實現區分,以便繼續保留原有方式的處理,那麼我們增加一個特別的OracleManaged類實現Oracle元數據的處理即可。
應用這個Oracle.ManagedDataAccess方式,相對於OracleClient方式,我們幾乎不用變化任何對象的名稱,只是換了一個命名空間而已,基本實現完全相容。
有了這個獲取數據的方式,當然需要對數據配置的界面增加一個OracleManaged的對應方式了,因為Oracle.ManagedDataAccess和OracleClient的連接字元串有所差異的。
前者Oracle.ManagedDataAccess的連接字元串變為:
Data Source= (DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = orcl.mshome.net)
)
);User ID=win;Password=win
依照這個配置的參數我們修改下Oracle資料庫連接字元串的配置界面如下:
其中我們對於Oracle連接字元串描述部分,提示參考PLSQL Developer裡面【幫助】【支持信息】 【TNS名稱】的對應部分即可,如下所示。
有了這些配置信息,我們就可以不管服務端或者本地的Oracle版本是32位的還是64位的,實現全部相容,並且如果客戶端沒有安裝Oracle客戶端,照樣可以訪問Oracle服務端的數據的。
運行代碼生成工具,可以獲得Oracle的數據表等信息,可以在Oracle環境下,無需安裝Oracle客戶端,順暢使用代碼生成工具進行代碼的開發工作了。