我有简单的代码,希望查询超时以测试异常日志记录,因此我正在使用context.Database.SetCommandTimeout()
方法,提供最小值为1 tick的值,但查询不会超时并获取数据库中的数据。
我的EF版本是EF Core 3.1.8。
代码如下:
await using var context = new CriusCommissionsDatabaseContext(_config);
context.Database.SetCommandTimeout(TimeSpan.FromTicks(1));
var saleSegments = await context.BSaleSegment
.Include(x => x.Sale)
.Where(x => x.Sale.CorrelationId == correlationId)
.ToListAsync();
答案 0 :(得分:1)
在RelationalDatabaseFacadeExtensions中运行SetCommandTimeout
函数时,该函数中发生的事情是TimeSpan被转换为整数,而TimeSpan.FromTicks(1)
将被转换为0
。根据{{3}}的说法,
实施者注意,建议0表示没有超时。
因此,在这种情况下,这意味着TimeSpan.FromTicks(1)==没有超时,因此您能够输入的最小值必须等于int 1。