在代碼生成工具Database2Sharp中使用ODP.NET(Oracle.ManagedDataAccess.dll)訪問Oracle資料庫,實現免安裝Oracle客戶端,相容32位64位Oracle驅動

来源:https://www.cnblogs.com/wuhuacong/archive/2019/11/21/11906638.html
-Advertisement-
Play Games

由於我們開發的輔助工具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客戶端,順暢使用代碼生成工具進行代碼的開發工作了。

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 1.內容介紹 深入解析tp5.1與laravel 中Facade底層原理實現 1. 什麼是Facade 2. 為什麼需要有什麼好處 3. Facade實現原理 4. 功能實現、 5. 容器註入 2.知識講解 0.什麼是Facade??為什麼需要?有什麼好處 專業解釋: 門面模式(Facade)又稱外 ...
  • Hangman 游戲簡介 百度百科 列印Hangman 其它 開始游戲 給定一個需要猜測的單詞開始游戲 def start_game(word): 已經猜錯的詞 wrong = '' 將未猜出的以 顯示 secret = hide(word) 記錄還剩多少個 ,如果為0,則為全部猜中 secret_ ...
  • 執行下麵這倆命令,找到對應的IP,增加host就能解決 nslookup github.global.ssl.fastly.Netnslookup github.com root@tao-PC:/var/www/html/go-project/test# nslookup github.global ...
  • 在前面簡單描述了下服務層,SOA面向服務架構,架構設計-業務邏輯層,以及一些面向設計原則理解和軟體架構設計箴言。這篇博客我們將繼續進入我們的下一層:數據訪問層。無論你用的是什麼開發模式或者是業務模式,到最後最必須具有持久化機制,持久化到持久化介質,並能對數據進行讀取和寫入CRUD。這就是數據訪問層。 ...
  • .NET Core 獲取資料庫上下文實例的方法和配置連接字元串 [TOC] 假設資料庫就兩個表:User、Blogs, 模型類如下 資料庫上下文大致這樣 ASP.NET Core 註入 ASP.NET Core 的資料庫註入是最為簡單方便的了,在 ConfigureServices 配置即可。 然後 ...
  • 一. 委托的分類 通過用什麼類型的方法來聲明為委托,可以分為兩類: 1. 委托靜態方法:把一個靜態方法給委托 2. 委托實例方法:把一個實例對象的成員方法給委托 (這兩個名字是博主取的,可能不是很專業只是為了好區分) 二. 原理部分 委托是將函數指針和實例對象打包在一起的類,它有兩個重要的成員,一個 ...
  • static void Main(string[] args) { string dir = @"C:\"; string[] dirs=Directory.GetDirectories(dir); long totalSize = 0; if(dirs!=null && di... ...
  • 在前面隨筆《在代碼生成工具Database2Sharp中使用ODP.NET(Oracle.ManagedDataAccess.dll)訪問Oracle資料庫,實現免安裝Oracle客戶端,相容32位64位Oracle驅動》中介紹了在代碼生成工具中使用ODP.NET(Oracle.ManagedDat... ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...