使用Entity框架并在超时方面提出了几个问题。
以下文章http://blogs.msdn.com/b/khen1234/archive/2005/10/20/483015.aspx 说
A client signals a query timeout to the server using an attention event. An attention
event is simply a distinct type of TDS packet a SQL Server client can send to it.
因此,SQL Server本身(没有调控器)不能尊重已发出命令的超时并在超时到期后将其终止。以下面的查询为例
var x = objectContext.Employees.Select(e => e.FirstName);
我们发出查询 - 如果我们假设查询需要40秒才能完成,默认命令超时为30秒。什么时候触发注意事件?
A)30秒?
B)40秒后(当查询返回40秒后,EF检查它是否大于默认值然后抛出异常)?
这里我也假设代码也会抛出一个SqlException并自动触发一个注意事件。
答案 0 :(得分:1)
30秒。将超时量视为“等待不超过......”
超时将触发SqlException
。 “关注事件”的程度低于此。
客户端(EF或其他)跟踪查询,超时后,通知服务器它不再对结果感兴趣,并抛出异常。您的客户端代码应该适当地处理该异常。