【问题标题】:How to load EF connection string from App.config after made it?制作后如何从 App.config 加载 EF 连接字符串?
【发布时间】:2012-10-07 10:25:41
【问题描述】:

我有问题,找不到解决方案。
开始时我有那个App.config 文件:

...
<connectionStrings>
    <add name="IdealsadEntities" connectionString="" providerName="System.Data.EntityClient" />
</connectionStrings>
...

在我的应用程序 (WinForm) 中,我从 xml 文件读取连接到数据库的参数,然后覆盖 App.config 并获得编译文件 AppName.exe.config

问题在于创建我的实体实例。我在创建文件后使用了这段代码:

IdealsadEntities _db = new IdealsadEntities();

但在第一次运行应用程序_db.Database.Connectionnull。在第二次运行时,它从AppName.exe.config 文件中读取,并且工作正常。

问题:

  • 所以我的问题是为什么首先运行读取空字符串,即使我 重写这个文件?
  • DbContext 是否更早执行?
  • 如何解决,从重写的文件中获取新的连接字符串?

【问题讨论】:

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


    【解决方案1】:

    您的 app.config 仅在应用程序启动时读取。在您重新启动程序之前,不会注意到您在应用程序运行期间对其写入的更改。

    但是,您可以使用连接字符串构造实体,如下所示:

    IdealsadEntities _db = new IdealsadEntities("metadata=res://...");
    

    您将连接字符串中的相应信息替换为您从其他文件中读取的数据。

    【讨论】:

    • 在此文件上调用 save 不会更改文件参数?
    • @WooCaSh 我不明白你的问题。什么是文件参数?你明白我的回答吗?据我所知,您正在尝试在程序运行时更新 app.config 中的连接字符串。这是行不通的,因为 app.config 只会被读取一次,那是在任何代码运行之前。
    • 所以第一次启动时的配置是只读的,应用程序有空字符串对吗?在这个时候应用程序也改变了这个文件并保存它,但在内存中仍然是保存前的文件?在第二次运行中它从正确的文件中读取?我现在明白了吗?
    • 那么您知道如何解决吗?保存文件后重新加载应用程序是个好主意吗?
    • 我不能那样做,因为构造函数看起来:public partial class IdealsadEntities : DbContext { public IdealsadEntities() : base("name=IdealsadEntities") { } 我在这行的问题中犯了错误。
    猜你喜欢
    • 2015-02-24
    • 2016-02-10
    • 2019-12-05
    • 1970-01-01
    • 2013-02-01
    • 1970-01-01
    • 2011-09-26
    • 1970-01-01
    相关资源
    最近更新 更多