sql server-如何使用实体框架减少连接超时



我想让数据库连接到我的SQL Server快速失败。如何减少超时?我已经尝试在连接字符串中添加Connection Timeout=1,但是这似乎没有什么区别。

对于Connection Timeout=500,超时大约需要8分30秒。这是意料之中的事。对于Connection Timeout=1,超时大约需要40秒,这比预期的要长得多。

我找到了EntityConnection.ConnectionTimeout属性,但它是只读的。我还能做些什么来减少这个超时吗?这是实体的问题吗?

更新:这是我的连接字符串。超时仍然需要大约40秒。

<add name="KofaxAdminToolsEntities" connectionString="metadata=res://*/DB.Model.KofaxAdminTools.csdl|res://*/DB.Model.KofaxAdminTools.ssdl|res://*/DB.Model.KofaxAdminTools.msl;provider=System.Data.SqlClient;provider connection string=&quot;data source=MY_DATASOURCE;initial catalog=MY_CATALOG;persist security info=True;user id=MY_USER;password=MY_PASSWORD;MultipleActiveResultSets=True;App=EntityFramework;Connection Timeout=1&quot;" providerName="System.Data.EntityClient" />

更新2:所以我发现超时是tcp超时,而不是sql连接超时

您在哪里以及如何指定连接超时?

我只是试着把它添加到我的EF连接字符串中(首先使用EF数据库),它按预期工作:SQL Server服务停止后,连接尝试几乎立即超时。。。。

<add name="myEntities" 
     connectionString="metadata=res://*/People.csdl|res://*/People.ssdl|res://*/People.msl;provider=System.Data.SqlClient;
             provider connection string=&quot;data source=.;initial catalog=mydb;
             integrated security=True;connect timeout=1;multipleactiveresultsets=True;
                                      ***************** 
             App=EntityFramework&quot;" 
     providerName="System.Data.EntityClient" />

(为了清晰起见,EF连接字符串已断开并封装-这将只是web.config中的一条长线)

您需要在EF连接字符串的provider connection string=值中添加connect timeout=x(其中x以秒为单位,任何大于0的值都可以)

将以下代码放入DbContext类的构造函数中:

((IObjectContextAdapter)this).ObjectContext.CommandTimeout = 1;

最新更新