2013-03-25 30 views
0

我试图让用户输入数据源到一个对话框,然后我写入应用程序的app.config。我遇到这种情况的问题:如何强制实体框架5 DbContext从app.config重新读取连接字符串?

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

2)然后用户打开具有EF代码的对话框(它位于连接字符串内),并且EF引发它无法连接的异常。

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

4)用户再次打开触发EF代码的对话框,EF仍然在那里有旧的数据源,但现在在app.config中是正确的。我试过 ConfigurationManager.RefreshSection(“connectionStrings”)。

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

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

回答

0

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

0

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

+0

是的,每当我的表单加载我新的了。每次表单关闭时,Dispose()。 – 2013-03-25 20:35:42

相关问题