调试实体框架超时

本文关键字:超时 框架 实体 调试 | 更新日期: 2023-09-27 18:12:06

我使用EF6(完全最新)与SQL Server 2012 Express和MVC 5。我今天开始看到一个新的错误——一个特定的查询超时了。其他一切工作正常,只有这一个查询超时。我如何调试它,以找出这个特定查询超时的原因?这是一个新的错误,就像我说的,只有这个查询会发生这种情况(所有其他查询都在最短的时间内运行,正如预期的那样)。

我使用MiniProfiler在网站上,如果有某种方式,我可以用它来检查的东西,但我只有SSMS Express所以我不能使用Profiler

调试实体框架超时

您可以创建继承DbCommandInterceptor (https://msdn.microsoft.com/en-us/library/system.data.entity.infrastructure.interception.dbcommandinterceptor%28v=vs.113%29.aspx)的新类。

重写readerperformed, nonqueryperformed, scalareperformed方法。在每个方法中,都有一个interceptionContext参数,该参数具有在执行给定命令(如果有的话)期间发生异常的Exception属性。检查此属性,如果是超时异常- log DbCommand。CommandText和参数。

然后使用这些信息,尝试找出使用SSMS和原始sql查询的错误。

忘了说-别忘了做

DbInterception.Add(new YourDbInterceptor());