0

使用实体框架并有几个关于超时的问题。

以下文章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 并自动触发注意事件。

4

1 回答 1

1

在 30 秒时。将超时量视为“等待时间不超过...”

超时将触发SqlException. “注意事件”低于此级别。

客户端(EF 或其他)跟踪查询,并在超时后通知服务器它不再对结果感兴趣,并引发异常。您的客户端代码应该适当地处理该异常。

于 2012-08-02T12:33:38.080 回答