簡體   English   中英

如何使用動態連接字符串對EF 6服務進行DI

[英]How to DI an EF 6 Service with dynamic connection string

我們的數據庫由一個管理數據庫和多個客戶端數據庫組成。 當用戶登錄時(通過管理數據庫),我們確定他們應使用哪個客戶端數據庫,並返回該連接字符串以供將來使用(存儲在會話中)。

我真的很喜歡這個答案與EF6一起使用的方式,並且想實現類似的東西,但是不確定如何使用DI以及更新連接字符串。

使用DbConnection可以直接更新DbContext上的連接字符串。 這只是通過我目前未看到的某些DI機制干凈地創建和更新DbContext的能力。

DI是編譯時的過程,但是您可以根據條件在運行時使用工廠模式進行一些決策,以實例化一個類(從繼承自同一接口的一組類中)

作為您問題的解決方案,您可以使用靜態函數返回適當的連接字符串,而無需DI

public static class ConnectionStringPorvider
{
    public static string getConnectionString()
    {
        switch(dbName)
        {
         ....
        }
    }
}

並在您的數據上下文類中

base(global::[class name space].ConnectionStringPorvider.getConnectionString(dbName), mappingSource)

暫無
暫無

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

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