在实体框架4.3中设置命令超时

时间:2012-07-31 19:16:20

标签: c# .net entity-framework entity-framework-4.3 command-timeout

我找不到使用实体框架4.3及其'来设置linq查询的命令超时的方法。的DbContext。 如何在实体框架中增加Commandtimeout?

修改 我实际上是在寻找命令超时增加。我混淆了两个,它是sql命令超时而不是连接。

由于

4 个答案:

答案 0 :(得分:62)

如果您正在使用DbContext,则首先需要下拉到ObjectContext:

((IObjectContextAdapter)context).ObjectContext.CommandTimeout = 180;

答案 1 :(得分:10)

我在Context类中添加了命令timeout值,试图处理填充我的应用程序的一些存储过程的更长处理时间。好像已经成功了。

public partial class ExampleEntities : DbContext
    {
        public ExampleEntities()
            : base("name=ExampleEntities")
        {
            ((IObjectContextAdapter)this).ObjectContext.CommandTimeout = 180;
        }

        protected override void OnModelCreating(DbModelBuilder modelBuilder)
        {
            throw new UnintentionalCodeFirstException();
        }

答案 2 :(得分:9)

这个命令就足够了。

((System.Data.Entity.Infrastructure.IObjectContextAdapter) context).ObjectContext.CommandTimeout
                = 180;

答案 3 :(得分:0)

使用await时,我在设置CommandTimeout时遇到了问题,

await _dbContext.Database.Connection.QueryAsync("Update ....")

然后我在文档https://docs.microsoft.com/en-us/dotnet/api/system.data.sqlclient.sqlcommand.commandtimeout?view=netframework-4.8中找到了

在异步方法调用(例如BeginExecuteReader)期间,将忽略CommandTimeout属性。

我更改为:

_dataWarehouseDbContext.Database.Connection.Query("Update ...")

和CommandTimeout开始工作:)