1

从事基于 EF4 的项目。在我的应用程序中,我更改了 ObjectContext 使用的命名连接字符串,并将其保存回 App.config。但是 ObjectContext 保存了它的连接并且不介意更改。尝试使用手动创建的连接重新初始化它,但它不起作用。我有 ConnectionManager - 这是Save方法:

    /// <summary>
    /// Save configuration changes
    /// </summary>
    public void Save()
    {
        // Apply connection string
        config.ConnectionStrings.ConnectionStrings[connectionStringName].ConnectionString = entityConnectionStringBuilder.ConnectionString;

        // Save config
        config.Save();

        // Apply changes to context
        EntityConnection newConnection = new EntityConnection(entityConnectionStringBuilder.ConnectionString);
        Entities context = new Entities(newConnection);
        // Entities context = new Entities(config.ConnectionStrings.ConnectionStrings[connectionStringName].ConnectionString);
        context.Dispose();
    }

那么,在不重新启动程序的情况下持久地将新连接应用到 ObjectContext 是否有任何魔力,或者我应该重新加载 App.Config?

注意:所有ObjectContext用法都包含在工作单元模式中,因此Dispose每次都是 d。

4

1 回答 1

1

您需要小心在运行时更改 app.config。

如果您在 VS 中进行测试,请检查实际更改了哪个文件。app.config 在调试开始时被复制。

此外 app.config 被缓存。所以除非你

    ConfigurationManager.RefreshSection("xxx");// config manager needs a kick...

你不会有太多的运气...

如果仍有问题,建议在 app.Config 更改上搜索 Google。

但我不确定你是否可以让 EF 读取运行时添加的命名连接字符串。如果没有,动态连接字符串也可能是您需要查看的内容。 EntityFramework 代码优先自定义连接字符串和迁移

于 2013-08-06T12:40:04.957 回答