0

我试图允许用户在对话框中输入数据源,然后我将其写入应用程序的 app.config。我遇到问题的场景是这样的:

1)用户在我的对话框中输入数据源,对话框添加或更新连接字符串。在这种情况下,用户第一次输入了错误的数据源。

2)然后用户打开包含 EF 代码(初始化连接字符串的东西)的对话框,并且 EF 抛出无法连接的异常。

3) 用户回到原来的对话框,输入正确的数据源名称,app.config 再次更新。

4) 用户再次打开触发 EF 代码的对话框,EF 中仍然有旧数据源,尽管它现在在 app.config 中是正确的。

我已经尝试过 ConfigurationManager.RefreshSection("connectionStrings")。

我也尝试过运行 MyEFContainer.Database.Initialize() 。

两者似乎都不起作用。我需要做什么才能让 EF 在不强制用户关闭并重新打开应用程序的情况下刷新连接字符串数据?如果他们这样做,那么它会起作用。

4

3 回答 3

0

目前,我认为强制 EF 重新加载 app.config 。在我们更改 app.config 之后

 ConfigurationManager.RefreshSection("xxx")

不适用于 EF,因此您必须重新启动应用程序。

解决问题的最佳方法:app.config 中没有连接字符串。

使用自动迁移和使用相同上下文的 2 个数据库。真正的运行时提供的连接。方法

于 2014-11-21T07:06:53.547 回答
0

我总是使用内存中的连接字符串。将其保存在例如上下文工厂中。最初您从配置文件中读取它,但它可能会被新的替换。您将新的存储在 app.config 中(当它有效时)以供下一次运行应用程序。

于 2013-03-25T20:19:44.447 回答
0

您是否在更正连接字符串后实例化 DbContext 类的新实例?重用最初失败的 DbContext 实例将是问题所在。

于 2013-03-25T20:34:25.427 回答