C# 刷新EntityFramework连接
我正在更改App.config中的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;
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部署时。