[英]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.