C# 如何在实体框架中为每个命令指定特定于命令的超时?
我希望所有正常命令的默认超时时间为30秒,但对于一个存储的进程,我需要5分钟 我不想这样做,除非这是唯一的办法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
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;//重置
}
在执行存储过程之前更改它,并在完成后恢复:)