Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/266.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/elixir/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在实体框架中为每个命令指定特定于命令的超时?_C#_.net_Sql Server_Entity Framework_Tsql - Fatal编程技术网

C# 如何在实体框架中为每个命令指定特定于命令的超时?

C# 如何在实体框架中为每个命令指定特定于命令的超时?,c#,.net,sql-server,entity-framework,tsql,C#,.net,Sql Server,Entity Framework,Tsql,我希望所有正常命令的默认超时时间为30秒,但对于一个存储的进程,我需要5分钟 我不想这样做,除非这是唯一的办法 public partial class AContext : DbContext { public AContext(string connectionString) : base(connectionString) { ((IObjectContextAdapter)this).ObjectContext.CommandTimeout

我希望所有正常命令的默认超时时间为30秒,但对于一个存储的进程,我需要5分钟

我不想这样做,除非这是唯一的办法

public partial class AContext : DbContext
{
    public AContext(string connectionString)
        : base(connectionString)
    {
        ((IObjectContextAdapter)this).ObjectContext.CommandTimeout = 300;
    }
}
如何仅将超时附加到此查询

Context.Database.SqlQuery<AAAAA>("usp_AAAAA");
Context.Database.SqlQuery(“usp_uuaaaaaa”);
您可以直接在的属性上设置,无需尝试从获取对象上下文

为执行创建一个新实例,然后将其删除

如果您有一个共享实例,则必须将调用包装在try/finally块中,并在finally块中重置超时,这样即使在发生故障时也会重置超时

using(var Context = new AContext())
{
    Context.Database.CommandTimeout = 60*5; // 5 minutes
    var result = Context.Database.SqlQuery<AAAAA>("usp_AAAAA");
}
使用(var Context=new AContext())
{
Context.Database.CommandTimeout=60*5;//5分钟
var result=Context.Database.SqlQuery(“usp_uu-AAAAA”);
}
如果上下文是共享的

try
{
    Context.Database.CommandTimeout = 60*5; // 5 minutes
    var result = Context.Database.SqlQuery<AAAAA>("usp_AAAAA");
}
finally{
    Context.Database.CommandTimeout = null; // reset
}
试试看
{
Context.Database.CommandTimeout=60*5;//5分钟
var result=Context.Database.SqlQuery(“usp_uu-AAAAA”);
}
最后{
Context.Database.CommandTimeout=null;//重置
}

在执行存储过程之前更改它,并在完成后恢复:)