我发现该DatabaseFacade.SetCommandTimeout
方法和该SqlServerDbContextOptionsBuilder.CommandTimeout
方法都没有对我的代码产生任何影响,而是一个长时间运行的 SQL 命令只是无限期地继续。
我的上下文对象看起来像这样:
public class MyDataContext : DbContext
{
public MyDataContext()
{
base.Database.SetCommandTimeout(60);
}
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
...
optionsBuilder.UseSqlServer(connection, sqlServerOptions => sqlServerOptions.CommandTimeout(60));
}
}
但是当我在我的 Web API 中执行代码时:
using var dbContext = new MyDataContext();
var timeout = dbContext.Database.GetCommandTimeout(); // this, as expected, returns "60"
var listOfEntities = dbContext.MyLargeSetOfEntities.ToList(); // this, however, just runs way longer than a minute (it is returning an immense amount of data to test the timeout)
有没有什么地方可以覆盖这个值并使其无限期?