命令超时被忽略

时间:2020-10-23 17:18:53

标签: c# entity-framework entity-framework-6 timeout database-connection

我使用此功能来检查与数据库服务器的连接是否正常,我将超时设置为3秒,但是当服务器不可用时,大约需要45秒来捕获错误。为什么CommandTimeout被忽略?

bool CheckDbConn()
{
  try
  {
    using (MyDB db=new MyDB(GetCustomConnString()))
    {
      db.Database.CommandTimeout = 3;
      var someEntity =  db.SomeSet.FirstOrDefault();
      return true; // connection ok
    }
  }
  catch (Exception ex)
  {
   // catches error after 45 seconds
   return false; // error connecting server;
  }
}
  • 实体框架6.2

2 个答案:

答案 0 :(得分:0)

您需要的是ConnectionTimeout

CommandTimeout,如果用于限制命令的运行时间。

答案 1 :(得分:0)

只需完成贾斯汀的答案,

此属性为只读,您必须将其添加到conn字符串中


static private string GetConnectionString()
{
    return "Data Source=(local);Initial Catalog=AdventureWorks;"
        + "Integrated Security=SSPI;Connection Timeout=30";
}

https://docs.microsoft.com/en-us/dotnet/api/system.data.sqlclient.sqlconnection.connectiontimeout?redirectedfrom=MSDN&view=dotnet-plat-ext-3.1#System_Data_SqlClient_SqlConnection_ConnectionTimeout