Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 刷新EntityFramework连接_C#_.net_Entity Framework - Fatal编程技术网

C# 刷新EntityFramework连接

C# 刷新EntityFramework连接,c#,.net,entity-framework,C#,.net,Entity Framework,我正在更改App.config中的EntityFramework连接字符串,如下所示: var connectionString = new SqlConnectionStringBuilder(entityConnectionString.ProviderConnectionString); connectionString.UserID = dbUser; connectionString.Password = dbPass;

我正在更改App.config中的EntityFramework连接字符串,如下所示:

        var connectionString = new SqlConnectionStringBuilder(entityConnectionString.ProviderConnectionString);

        connectionString.UserID = dbUser;
        connectionString.Password = dbPass;
        connectionString.InitialCatalog = dbCatalog;
        connectionString.DataSource = dbServer;

        entityConnectionString.ProviderConnectionString = connectionString.ToString();

        cString.ConnectionString = entityConnectionString.ToString();

        conf.Save(ConfigurationSaveMode.Full);
        ConfigurationManager.RefreshSection("connectionStrings");

但EntityFramework继续使用旧的连接设置,直到应用程序重新启动。有没有办法强制EntityFramework从App.config获取新的连接字符串?

即使
ConfigurationManager
没有缓存内容(尽管
Save()
可能会刷新缓存),EntityFramework对象也会缓存连接。很可能您需要释放这些对象并重新创建它们,以便它从configuration manager中提取新的连接字符串(假设缓存被刷新),或者手动修改DbContext对象上的连接字符串

我相信特拉维斯是对的。下面是我用来做这件事的代码:

public void RefreshContext(string myConnectionString)
{
  DisposeContext();
  Context = new MyContext(myConnectionString);
}

public void DisposeContext()
{
  if (Context == null)
    return;
  Context.Dispose();
}

您是否经常更改连接字符串?每次通过ClickOnce部署时。