2014-01-30 2 views
2

Я меняю строку подключения EntityFramework в 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?

+0

Вы часто вносите изменения в строку подключения? – Miller

+0

Каждый раз, когда он развертывается через ClickOnce. – user3223738

ответ

0

Даже если ConfigurationManager не кэшировал материал (хотя Save() может обновить кеш) объекты EntityFramework будут кэшировать соединение. Скорее всего, вам нужно освободить эти объекты и воссоздать их, чтобы он вытащил новую строку подключения из диспетчера конфигурации (при условии, что кеш обновится) или фактически изменит строку соединения на вашем объекте DbContext вручную.

0

Я считаю, что Тревис прав. Вот код, который я использовал для этого:

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

public void DisposeContext() 
{ 
    if (Context == null) 
    return; 
    Context.Dispose(); 
} 
Смежные вопросы