2013-08-06 48 views
1

處理基於EF4的項目。在我的應用程序中,我更改了ObjectContext使用的命名連接字符串,並將其保存回App.config。但ObjectContext保存它的連接並不介意更改。嘗試用手動創建的連接重新啓動它,但它不起作用。我的ConnectionManager爲 - 這裏是Save方法:更改後更新實體框架ObjectContext連接

/// <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用法都以工作單元模式包裝,因此每次都是Disposed。

+0

是您重新啓動應用程序後,或在運行過程中的問題? –

+0

問題關於運行時間 – oxfn

回答

1

您需要小心在運行時更改app.config。

如果您在VS中測試,請檢查哪個文件實際發生了更改。 app.config在調試開始時被複制。

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

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

你不會有多少運氣...

提醒Google周圍的app.config變化,如果仍然有問題。

但是im不知道你是否可以讓EF會讀取運行時添加的命名連接字符串。 如果沒有,動態連接字符串也可能是你需要看的東西。 EntityFramework code-first custom connection string and migrations

+0

非常感謝!我用'ConfigurationManager.RefreshSection(「connectionStrings」)'踢了它,它可以根據需要運行 – oxfn