命令超时设置的位置与早期版本不再相同。
然而,我找不到任何地方说明如何更改这个设置。
我正在上传非常大的文件,保存所需的时间超过默认的30秒。
请注意,我询问的是命令超时,而不是另一个问题中的迁移超时。
然而,我找不到任何地方说明如何更改这个设置。
我正在上传非常大的文件,保存所需的时间超过默认的30秒。
请注意,我询问的是命令超时,而不是另一个问题中的迁移超时。
services.AddDbContext<YourDbContext>(options => options.UseSqlServer(
this.Configuration.GetConnectionString("YourConnectionString"),
sqlServerOptions => sqlServerOptions.CommandTimeout(60))
);
您可以通过您的上下文进行更改。
public class ApplicationDbContext : DbContext
{
public ApplicationDbContext()
{
Database.SetCommandTimeout(150000);
}
}
Database
属性设置超时,请确保添加using Microsoft.EntityFrameworkCore;
,因为SetCommandTimeout
是一个扩展方法。 - undefined如果您想为一个Context实例仅临时增加超时时间。
比如对于1个请求(默认Scoped上下文生命周期)
在长时间运行的查询之前更改此设置:
Context.Database.SetCommandTimeout(TimeSpan.FromMinutes(20))
通过使用有限作用域,您只需在一次指定超时时间,而不必在任何后续服务构造函数注入中指定它。
SetCommandTimeout
中使用的值仅限于通过 DI 提供的一个上下文,而不是适用于每个上下文实例?您是否有参考文献来支持这一点? - Blair AllenDbContext.Database
的文档明确指出为此上下文创建一个数据库实例,允许对底层数据库进行创建/删除/存在检查
,所以是针对一个上下文的。https://learn.microsoft.com/en-us/dotnet/api/system.data.entity.dbcontext.database?view=entity-framework-6.2.0 - undefined"Data Source=SqlExpress;Initial Catalog=YourDatabase;Integrated Security=true;Command Timeout=300"
这将仅适用于 Microsoft.Data.SqlClient 2.1.0 或更高版本,如果您尝试使用 System.Data.SqlClient 进行此操作,将会出现异常。
CommandTimeout
,例如:public class DbConnect: IConnnectDb
{
private dbentitient _context;
// inject this to a db entity from constructor.
//inside each method now use the follow before u actually run the query to db.
_context.Database.SetCommandTimeout(400);
}
Database.SetCommandTimeout
的答案。 - Ivan Stoev