2014-01-30 2 views
2

이 같은의 App.config에 EntityFramework 연결 문자열을 변경하고 있습니다 :새로 고침 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(); 
}