【问题标题】:c# - Entity Framework ConnectionString won't update after changing App.Config in runtimec# - 在运行时更改 App.Config 后,实体框架 ConnectionString 不会更新
【发布时间】:2015-08-28 13:58:36
【问题描述】:

我正在开发一个 WPF 应用程序,它依赖于实体框架进行数据访问。 在第一次安装时,我需要根据用户输入创建一个新的连接字符串,然后根据它更新 App.Config。

问题是:更新 App.Config 文件后,Entity Framework 没有检测到更改,而是使用旧的启动时 ConnectionString 来实例化 DbContext。

如何在运行时更新实体框架的 ConnectionString 设置?

【问题讨论】:

  • 部署的应用中有app.config吗?
  • 是的。可执行文件.exe.config
  • 我遇到了这个问题。由于更新 edmx,我对连接字符串、数据库名称的更改不适用。我关闭解决方案并再次打开它,它可以工作。

标签: c# entity-framework entity-framework-6 connection-string app-config


【解决方案1】:

实体框架缓存连接字符串,没有强制刷新的方法。

来自this articleDbContext 构造函数中给出的连接字符串没有被缓存,那么您可以使用它作为解决方法:

public class MyContext : DbContext {
    public MyContext()
        : base(ConfigurationManager.ConnectionStrings["MyConnection"].ConnectionString)
    {
    }
}

【讨论】:

  • 谢谢,顺便说一句非常有用的链接。但是根据上面的文档中写的 cmets 说“如果重新生成代码,对这个文件的手动更改将被覆盖。”,这些更改不会在以后消失吗?
  • 如果您重新编译您的应用程序...是的,但这不会发生在已部署的应用程序上。
  • 确保在命名空间中添加:“using System.Configuration”。
  • 这只是一个hack而不是真正的解决方案,每次重建解决方案时都必须重置它.....
【解决方案2】:

今天有同样的问题。连接字符串存储在 obj 文件夹中缓存的 App.Config 文件中。

解决方法:删除 obj 文件夹。

【讨论】:

    【解决方案3】:

    我有同样的错误。我的新连接字符串丢失了“Initial Catalog="

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-12-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-12-20
      • 1970-01-01
      相关资源
      最近更新 更多