[英]Entity set connection timeout
如何通過編碼(不在連接字符串中)設置上下文的connectionTimeout(不是commandTimeout)的值? 這是只讀的:
DbContext.Database.Connection.ConnectionTimeout = 10;
謝謝
Udpate:
我的問題是測試上下文是否可以快速使用並且默認時間是否長? 我嘗試了這個:
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更改為readOnly,而commandTimeout不會設置該值...
我不知道可以通過EF API更改連接超時的任何選項。 但是,您可以在運行時更改連接字符串。 您可以解析配置的連接字符串並更改超時參數,如果不存在則添加一個。
如果僅使用SQL Server,則建議使用SqlConnectionStringBuilder 。 在構造DbContext時,使用采用現有連接字符串的構造函數,更改ConnectTimeout ,獲取修改后的連接字符串 ,並使用該連接字符串。
根據您實際要解決的問題,一種替代方法可能是使用SlowCheetah輕松為不同的構建類型生成具有不同配置字符串的web.config。
http://visualstudiogallery.msdn.microsoft.com/69023d00-a4f9-4a34-a6cd-7e854ba318b5
更新
根據您的評論...
嘗試類似
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;
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.