【发布时间】:2017-09-13 09:48:38
【问题描述】:
我在使用基于实体框架的 API 时遇到了问题,其中第 3 方开发人员错误地发送了太大的查询并导致系统性能下降。我已通知他们停止练习,但我想将查询限制为 1 分钟,然后将其切断。
听起来我应该能够在构造函数中设置命令超时(如下所示)。当我使用长查询对其进行测试时,它完全按照以前(3 分钟以上)的方式执行查询,它似乎根本不尊重命令超时。
我做错了吗?这不是命令超时预期的工作方式吗?它是异步的,命令超时是否不适用于异步?任何解决方案或指针将不胜感激。
public class CustomContext : DbContext
{
public CustomContext(string connectionName)
: base(connectionName)
{
var objectContext = (this as IObjectContextAdapter).ObjectContext;
objectContext.CommandTimeout = 60;
}
public CustomContext(EntityConnection connection)
: base(connection, contextOwnsConnection: false)
{
var objectContext = (this as IObjectContextAdapter).ObjectContext;
objectContext.CommandTimeout = 60;
}
}
【问题讨论】:
-
一方面,您可以使用
this.Database.CommandTimeout。根据我的经验(Sql Server),它可以正常工作。你确定是SQL命令需要很长时间吗?之后也可以在内存中处理。
标签: c# sql entity-framework entity-framework-6