我處理與利用的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. JDBC連接錯誤到Oracle數據庫
- 8. Mysql數據庫連接錯誤
- 9. PHP登錄數據庫連接錯誤
- 10. WordPress數據庫連接錯誤
- 11. 連接數據庫時出現錯誤
- 12. 笨3錯誤連接到數據庫
- 13. sapinst給出數據庫連接錯誤
- 14. 錯誤在PHP和數據庫連接
- 15. 捕獲數據庫連接錯誤
- 16. 連接到錯誤的數據庫
- 17. 000webhost網站數據庫連接錯誤
- 18. 連接到數據庫錯誤的C#
- 19. 從數據庫中的連接錯誤
- 20. 錯誤連接到數據庫ASP.NET C#
- 21. 數據庫連接錯誤DNN 7
- 22. 數據庫連接器錯誤
- 23. Mysql數據庫連接錯誤
- 24. Windows CE SQL數據庫連接錯誤
- 25. MySQL數據庫連接錯誤
- 26. 數據庫連接的基本錯誤
- 27. 連接php到mysqli數據庫錯誤
- 28. 錯誤在PHP連接數據庫
- 29. Recieving錯誤連接到數據庫時
- 30. Hibernate的數據庫連接錯誤
你在哪裏存儲兩個連接字符串? – pleinolijf
在一個類中的兩個常量 – Francesco