我处理与利用的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