簡體   English   中英

帶有 Oracle 自治數據庫的 EF Core 腳手架

[英]EF Core Scaffolding with Oracle Autonomous Database

好奇是否有人使用 Oracle Cloud 的自治數據庫產品(不是本地 Oracle DB)成功地為 EF Core 完成了數據庫腳手架。 棘手的部分似乎是連接字符串。 亞行現在需要使用錢包下載,我不知道如何處理。

Oracle 的ODP.Net 示例顯示了一些用於配置數據提供者的特殊配置命令。 但是,這些命令在使用 Scaffold-DbContext 時似乎不可用。 將所需文件與數據連接庫放在同一位置的想法聽起來很棒,除了 NuGet 庫似乎沒有被持久化並且僅作為構建過程的一部分進行部署。 他們關於連接到 ADB 的博客文章建議重寫連接字符串以使用似乎不受支持的 Easy Connect 格式。

他們有一篇關於將 SSRS 連接到 ADB的不相關帖子,其中有一些我尚未嘗試過的數據提供者的命令行配置,因為我不確定它是否會起作用,但似乎它可能至少在找出某種解決方案。

.NET Core/EF Core 版本為 3.1.9。

我嘗試過的一些變體...({} 表示已編輯信息的占位符)

dotnet ef dbcontext scaffold "User Id={uname};Password={pwd};
Data Source={(description...) from tnsnames.ora}" Oracle.EntityFrameworkCore

結果:請求超時

dotnet ef dbcontext scaffold "User Id={uname};Password={pwd};
Data Source={tcps://... from blog}" Oracle.EntityFrameworkCore

結果:無效的連接字符串

dotnet ef dbcontext scaffold "User Id={uname};Password={pwd};
Data Source={host}:{port}/{service_name}" Oracle.EntityFrameworkCore

結果:連接服務器失敗

如果有人對此有任何智慧可以分享,我將不勝感激。

弄清楚了。

  1. 將 wallet.sso、sqlnet.ora 和 tnsnames.ora 復制到你的項目根目錄
  2. 從 tnsnames.ora 獲取數據源名稱——您通常會看到三個選項,一個用於 {dbname}_high,一個用於 {dbname}_low,一個用於 {dbname}_medium。 請參閱 Oracle 的文檔以了解它們之間的區別,但 _high 對我來說效果很好。
  3. 執行您的腳手架命令。 下面顯示的是一個使用dotnet ef dbcontext scaffold的基本示例, dotnet ef dbcontext scaffold為 TEST,用戶 ID 為 ADMIN,密碼為 PASSWORD
dotnet ef dbcontext scaffold "Data Source=TEST_high;User Id=ADMIN;Password=PASSWORD" Oracle.EntityFrameworkCore
  1. 可能需要修改創建的 DataContext 的OnConfiguring ......當我進一步了解時會更新。

有一個不使用錢包的替代方法。

在此鏈接中, oracle 自治數據庫沒有使用 TLS 的錢包,需要將自治數據庫更改為使用 TLS 而不是 mTLS 和錢包。

更改數據庫后,只需使用

dotnet ef dbcontext scaffold "Data Source=(description...);User Id=ADMIN;Password=PASSWORD" Oracle.EntityFrameworkCore

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM