Asp.net mvc 在MVC5/EF 6中使用codefirststoredprocs时出现超时问题。读取存储过程dbo时出错。[…]:超时已过期
为了一次处理近70K条记录,我在应用程序中使用了codefriststoredprocs 2.5.0。由于记录很少,一切正常,但对于大数据集,我收到“等待操作超时”异常。 我尝试按照以下方式将默认命令超时值从30秒修改为600秒Asp.net mvc 在MVC5/EF 6中使用codefirststoredprocs时出现超时问题。读取存储过程dbo时出错。[…]:超时已过期,asp.net-mvc,entity-framework,timeout,cfstoredproc,Asp.net Mvc,Entity Framework,Timeout,Cfstoredproc,为了一次处理近70K条记录,我在应用程序中使用了codefriststoredprocs 2.5.0。由于记录很少,一切正常,但对于大数据集,我收到“等待操作超时”异常。 我尝试按照以下方式将默认命令超时值从30秒修改为600秒 //Previous approach ((System.Data.Entity.Infrastructure.IObjectContextAdapter)this.db).ObjectContext.CommandTimeout = 600; //New ap
//Previous approach
((System.Data.Entity.Infrastructure.IObjectContextAdapter)this.db).ObjectContext.CommandTimeout = 600;
//New approach for EF 6
this.db.Database.CommandTimeout = 600;
但30秒后仍会收到连接超时消息。我还修改了web.config,将连接超时值设置为600秒(我知道这与命令超时值不同,但试一下)。
我觉得问题在于codefirststoredprocs库在执行存储过程时将命令超时值更改为默认值。是否有任何方法可以解决此问题,或者我应该使用另一种方法在应用程序中使用存储过程
提前谢谢。我换成EF6时遇到了同样的问题 您可能将CommandTimeout设置在错误的位置。尝试在创建上下文的位置设置CommandTimeout,如下所示:
var context = new Entities();
context.CommandTimeout = 600;
还要检查CommandTimeout是否在创建上下文后使用您的方法更改。如果是这样,那么可能还有其他问题 首先,我要感谢
CodeFirstStoredProcs
团队为解决此问题所做的努力和协作
我猜,如前所述,在CodeFirstStoredProcs
库中,命令超时值可能默认为30秒
在新版本(2.6版)中,他们在CallStoredProc
方法中添加了“command timeout”参数,帮助我设置commandtimeout的默认值
终于解决了我的问题
在我的例子中,为了处理将近70K条记录,我将CommandTimeout=0
设置为CallStoredProc
方法。这增加了无限的等待时间来执行存储的
程序
再次感谢
CodeFirstStoredProcs
team.:) 构造函数是newstoredproc(){commandTimeout=0}