我處理與利用的DbContext一個的EntityFramework骨幹C#應用程序自動切換連接字符串。 應用程序有兩種選擇:連接到遠程的SQL Server Express或連接的情況下,本地SQL緊湊4.0數據庫中的網絡連接不可用。 當我的應用程序啓動時,線程正在檢查是否可以連接到遠程數據庫。否則,它將自動需要切換連接字符串和提供程序以連接到本地數據庫。 到目前爲止,我試圖通過修改的app.config連接字符串部分,並迫使應用程序刷新部分,保存配置後,處理這個問題。這種方法不是最好的,因爲我需要有訪問權限才能寫入app.config文件。 你能提出一個更好的方法嗎?數據庫連接錯誤
Q
數據庫連接錯誤
1
A
回答
0
的DbContext構造器接受連接的名稱字符串或您想要選擇的實際連接字符串。
你可以做什麼,是測試你的初始連接字符串 - 也許有一個快速的ADO連接或簡單的東西,然後如果它連接使用它,否則連接使用另一種。
一些僞代碼:
YourDbContext YourContext;
if (TestConnection())
{
YourContext = new YourDbContext("ConnectionString1");
}
else
{
YourContext = new YourDbContext("ConnectionString2");
}
2
裹在一類的連接字符串的管理,使該類的單,並用它來獲得活動的連接字符串,像這樣:
public delegate void ConnectionChangedEventHandler(object sender, EventArgs e);
class ConnStringManager {
static public ConnStringManager Instance {get;private set;}
static {
Instance = new ConnStringManager();
}
public event ConnectionChangedEventHandler Changed;
private readonly string localConn;
private readonly string remoteConn;
public string ConnectionString {get; private set;}
private ConnStringManager() {
localConn = ... // Get local connection string from the config
remoteConn = ... // Get remote connection string from the config
TestAndSetConnectionString();
}
public void TestAndSetConnectionString() {
bool canUseRemote = true;
if (...) {
// Do some testing to see if remote DB is accessible
}
// Switch the connection string
var nextString = canUseRemote ? remoteConn : localConn;
bool changed = nextString != ConnectionString;
ConnectionString = nextString;
if (changed && Changed != null) {
Changed(this, EventArgs.Empty);
}
}
}
+0
感謝您的回答。這種設計方法似乎乾淨而有效,但除了將整體封裝到類中之外,我的問題是另一個問題:如何告知entityframework引擎我切換連接字符串和數據庫提供程序? – Francesco
+0
@Francesco您可以添加一個'Changed'事件讓用戶看到變化。有關詳細信息,請參閱編輯。 – dasblinkenlight
相關問題
- 1. 錯誤連接數據庫
- 2. 數據庫連接錯誤
- 3. 數據庫連接錯誤
- 4. 錯誤數據庫連接
- 5. 錯誤連接數據庫
- 6. 數據庫連接錯誤
- 7. 數據庫連接錯誤
- 8. 數據庫連接錯誤?
- 9. 數據庫連接錯誤(3):無法連接到數據庫',
- 10. Mysql數據庫連接錯誤
- 11. nodejs mongoose連接到數據庫錯誤
- 12. 錯誤數據庫連接或查詢
- 13. Android SQLite數據庫連接錯誤
- 14. Xamarin(android)數據庫連接錯誤
- 15. 錯誤時連接數據庫不斷
- 16. 連接到數據庫錯誤的C#
- 17. 連接php到mysqli數據庫錯誤
- 18. 連接到錯誤的數據庫
- 19. Mysql數據庫連接錯誤
- 20. 錯誤連接PHP到MariaDB數據庫
- 21. Access數據庫的連接錯誤
- 22. SQL Server數據庫連接錯誤
- 23. 數據庫連接錯誤JDBC
- 24. sapinst給出數據庫連接錯誤
- 25. 數據庫連接器錯誤
- 26. PHP登錄數據庫連接錯誤
- 27. 數據庫連接錯誤DNN 7
- 28. 數據庫連接字符串錯誤
- 29. Codeigniter - SQLServer數據庫連接錯誤
- 30. 從數據庫中的連接錯誤
你在哪裏存儲兩個連接字符串? – pleinolijf
在一個類中的兩個常量 – Francesco