在MVC5 / EF 6中使用codefirststoredprocs导致超时问题。从存储的proc dbo中读取错误。[…]:超时已过期

问题描述 投票:0回答:3

为了一次处理近70K记录,我在应用程序中使用了codefriststoredprocs 2.5.0。几乎没有记录,但一切正常,但有大量数据,我收到“等待操作超时”异常。我尝试按照以下方式将默认命令超时值从30秒修改为600秒。

//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库,该库在执行存储过程时将命令超时值更改为默认值。有什么方法可以解决此问题,还是应该转到在我的应用程序中使用存储过程的另一种方法。

提前感谢。

asp.net-mvc entity-framework timeout cfstoredproc
3个回答
0
投票

更改为EF6时遇到相同的问题。

您可能将CommandTimeout设置在错误的位置。尝试在要创建上下文的位置设置CommandTimeout,如下所示:

var context = new Entities();
context.CommandTimeout = 600;

还要在创建上下文后检查CommandTimeout是否随您的方法而更改。如果是这样,那么可能还有其他问题。


0
投票

首先,我要感谢CodeFirstStoredProcs团队为解决此问题所做的努力和协作。

我想,如前所述,CodeFirstStoredProcs库中的命令超时值可能默认为30秒。

随着新版本(版本2.6)的增加,他们在CallStoredProc<> 方法中添加了“命令超时”参数,这有助于我为commandtimeout设置默认值终于解决了我的问题。

在我的情况下,要处理近70K记录,我将CommandTimeout = 0设置为CallStoredProc<> 方法。这增加了无限的等待时间来执行存储程序。

再次感谢CodeFirstStoredProcs团队。 :)

© www.soinside.com 2019 - 2024. All rights reserved.