使用EnableRetryOnFailure的瞬态失败后的错误SQL结果

我有一个控制工业生产设备的程序,并且总是循环执行任务。这些任务的一部分是检查SQLServer数据库中的值。

现在,然后(每天几次),我们将遇到暂时性故障,从而导致该程序必须手动重新启动。为了防止这种情况,我为UseSqlServer启用了EnableRetryOnFailure选项。该程序现在不再崩溃,但有时会做出错误的决定。

services.AddDbContext<DbContext>(options =>
{
    options.UseSqlServer(connectionString,o =>
    {
        o.EnableRetryOnFailure();
    });
});

查询结果示例 EnableRetryOnFailure

我们每秒(通过linq)执行SELECT count(*) FROM table

1500
1500
1500
1500
Exception: Transient Failure....
1500
1500

查询结果示例带有 EnableRetryOnFailure

我们每秒(通过linq)执行SELECT count(*) FROM table

1500
1500
1500
1500
0
1500
1500

这是EF Core中的已知错误吗?如果有任何错误的结果,那就是比得到异常更令人担忧。 切换到使用共享内存会减少较少的瞬态故障吗? 使用EF Core 2.2,.net Core 2.2 SQL Server 2014

mfj111071 回答:使用EnableRetryOnFailure的瞬态失败后的错误SQL结果

发现错误是由于并发问题引起的。 (在读取的同时插入。)efcore中的一个错误是重试将给出错误的答案。它已在efcore 3及更高版本中修复。

本文链接:https://www.f2er.com/3136813.html

大家都在问