33

好吧,我想重新創建一個使用EF 4.1創建的項目到EF 5.0,足夠簡單或者至少我認爲。一個在我的舊項目的一件事情是,我能在EF 4.1更改數據庫連接字符串在運行時:EF 5在運行時更改連接字符串

using (var myContext = new MyEntities(ConnectionString)) 
{ 

} 

易peasy但在EF 5.0你必須以不同的方式做到這一點:

string connectionString = "data source=LocalHost;initial catalog=MyDatabase;user id=MyUserName;password=MyPassword;multipleactiveresultsets=True;App=EntityFramework"; 

using (var myContext = new MyEntities()) 
{ 
     myContext.Database.Connection.ConnectionString = connectionString; 
} 

現在,這花了我兩個小時找出更好的一部分,所以我想我的問題是這是在運行時更改連接字符串的正確方法或不?如果這是他們爲什麼做這個改變?

我確實發現了這個Link但它沒有奏效。我收到了Ladislav Mrnka第一個回答的第一條評論中詳細描述的錯誤。我後來發現這個似乎很好的Link

UPDATE

我重讀first link我張貼,我發現另一種解決辦法,我只是創建了一個局部類:

public partial class MyEntities : DbContext 
{ 
    public MyEntities(string connectionString) : base(connectionString) 
    { 
      Database.Connection.ConnectionString = connectionString; 
    } 
} 
+15

你應該寫你的編輯作爲答案,並接受它... – SRKX

+0

在你的答案,行'Database.Connection .ConnectionString = connectionString;'是多餘的,因爲該操作已經由基礎構造函數完成。 –

回答

6

使用上下文構造函數重載是把連接字符串作爲參數。

相關問題