2014-09-24 47 views
0

如何通過編碼來設置上下文的connectionTimeout(不是commandTimeout)的值(不在連接字符串中)? 這是隻讀:實體集連接超時

DbContext.Database.Connection.ConnectionTimeout = 10; 

感謝

UDPATE:

我probleme是測試如果我的情況下可快速,默認的時間是多久? 我嘗試這樣做:

 int? oldTimeOut = RepositoryDbContext.Database.CommandTimeout; 

     try 
     { 
      RepositoryDbContext.Database.Connection.ConnectionTimeout = 10; //readonly 
      RepositoryDbContext.Database.CommandTimeout = 10; // doesn't work, the value stay the same 
      RepositoryDbContext.Database.Connection.Open(); 
      RepositoryDbContext.Database.Connection.Close(); 
      return true; 
     } 
     catch 
     { 
      return false; 
     } 
     finally 
     { 
      RepositoryDbContext.Database.CommandTimeout = oldTimeOut; 
     } 

但我不能改變爲ConnectionTimeout是隻讀的,將CommandTimeout不設置值...

回答

2

我不知道任何選項來改變連接的通過EF API超時。但是,您可以在運行時更改連接字符串。您可以解析配置的連接字符串並更改超時參數,或者添加一個,如果它不存在。

如果你只使用SQL Server,我會建議使用SqlConnectionStringBuilder。使用需要existing connection string的構造函數,更改ConnectTimeout,獲取modified connection string,並在constructing your DbContext時使用該連接字符串。

根據您實際嘗試解決的問題,可以使用SlowCheetah爲不同的構建類型輕鬆生成帶有不同配置字符串的web.config。

http://visualstudiogallery.msdn.microsoft.com/69023d00-a4f9-4a34-a6cd-7e854ba318b5

UPDATE

基於您的評論...

試着這麼做

string normalConnectionString = RepositoryDbContext.Database.Connection.ConnectionString; 
var connectionBuilder = new SqlConnectionStringBuilder(normalConnectionString); 
connectionBuilder.ConnectTimeout = 10; 
string testConnectionString = connectionBuilder.ConnectionString; 

using (var testRepositoryDbContext = new RepositoryDbContextType(testConnectionString)) 
{ 
    try 
    { 
     testRepositoryDbContext.Database.Connection.Open();  
     testRepositoryDbContext.Database.Connection.Close(); 
     return true; 
    } 
    catch 
    { 
     return false; 
    } 
} 
+0

感謝,我中庸之道解釋我probleme在編輯 – Julian50 2014-09-24 15:45:48

+0

加入了代碼示例。它沒有顯示RepositoryDbContext是什麼類型,所以我稱之爲RepositoryDbContextType。您需要插入正確的類型名稱。 – 2014-09-24 15:57:08

+0

謝謝,但我不能使用和修改連接字符串,因爲我使用實體代碼的第一個配置。有沒有其他方法? – Julian50 2014-09-24 16:03:16