2

为了一次处理近 7 万条记录,我在我的应用程序中使用了 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 库上,它在执行存储过程时将命令超时值更改为默认值。有什么办法可以解决这个问题,或者我应该采用在我的应用程序中使用存储过程的替代方法。

提前致谢。

4

2 回答 2

2

First, I would like to thanks CodeFirstStoredProcs team for their effort and collaboration to solve this issue.

I guess, as mentioned earlier, the command timeout values might have been defaulted to 30 seconds inside CodeFirstStoredProcs library.

With their new release (version 2.6),they have added ‘command timeout’ parameter to the CallStoredProc<> method, that helped me set a default value for commandtimeout and finally solved my issue.

To process nearly 70K records in my case, I set CommandTimeout = 0 to CallStoredProc<> method. This adds an infinite waiting time to execute stored procedure.

Thanks once again for CodeFirstStoredProcs team. :)

于 2013-11-28T07:52:39.550 回答
0

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

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

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

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

于 2013-11-26T14:12:53.703 回答