簡體   English   中英

實體框架 - 將動態連接字符串與Oracle Provider一起使用

[英]Entity Framework - Use Dynamic connection string with Oracle Provider

我需要幫助 ! 我不確定標題是否重要,所以我會嘗試更好地解釋。

我在一個使用http請求到ASP.NET web api站點的角度網站上工作。 我的數據庫是Oracle數據庫。 我使用Entity Framework(Database First)和一個硬編碼連接字符串(在我的web.config中)

 <add name="UserConnection" connectionString="DATA SOURCE=ip:port/name;PASSWORD=pwd;PERSIST SECURITY INFO=True;USER ID=usr" providerName="Oracle.ManagedDataAccess.Client" /> 

(我用ip替換了真正的信息;端口;名稱; pwd; usr,因為我無法顯示它們)

所有這一切都有效,但現在我的團隊希望能夠將此Oracle連接字符串與動態USER ID和PASSWORD結合使用

目標是使用一個用戶的憑據登錄我的角度應用程序,並使用相同的憑據連接到Oracle DB。 因此我不能再使用這個硬編碼連接字符串了。 (創建時,用戶都在db users表和oracle users表中)

我試圖為我的db:Dbcontext類創建另一個構造函數,給出一個連接字符串:base()第一個參數:

public partial class db:DbContext {

public db(string connectionString):base(connectionString){}

...}

其中connectionString是我web.config中的同一塊:“DATA SOURCE = ip:port / name; PASSWORD = pwd; PERSIST SECURITY INFO = True; USER ID = usr”

測試它給了我這個錯誤:

“提供的sqlconnection未指定初始目錄或attachdbfilename oracle”

我認為這不起作用,因為我沒有在base first param中提供我的providerName(“Oracle.ManagedDataAccess.Client”),但我沒有找到接受providerName的第二個參數的構造函數。

我也試過這個:

public db(string connectionString):base(new OracleConnection(connectionString)){}

但是Visual Studio給了我這個錯誤:

“Erreur CS1503 Argument 1:轉換不可能de'Oracle.ManagedDataAccess.Client.OracleConnection'en'System.Data.Entity.Infrastructure.DbCompiledModel'”

我不知道DbCompiledModel是什么,也許這是關鍵,或者說我做錯了。

我還嘗試編輯web.config連接字符串,更改用戶和密碼並使用使用此連接字符串的默認db構造函數,但編輯此文件不能執行我想要的操作:只有在db請求之后才會編輯連接字符串完了,它重新加載了應用程序。

我知道它會超級,我有點迷失在那里,我剛開始做一些BackEnd應用程序(我正在實習)我之前只做FrontEnd。

感謝閱讀,這有點長。 我沒有在論壇中找到我想要的成功結果,所以我嘗試自己詢問

桑尼

您可以動態設置new OracleConnection ,但還需要將contextOwnsConnection設置為true 這可以解決您的錯誤:

“Erreur CS1503 Argument 1:轉換不可能de'Oracle.ManagedDataAccess.Client.OracleConnection'en'System.Data.Entity.Infrastructure.DbCompiledModel'”

public partial class Entities : DbContext
    {
        public Entities()
            : base(new OracleConnection("DATA SOURCE=Server; PASSWORD=123;USER ID=SYSTEM"), true)
        {

        }
      }

暫無
暫無

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

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