У меня есть программа, которая управляет промышленным производственным оборудованием и всегда выполняет задачи в цикле. Частью этих задач является проверка значений в базе данных SQLServer.
Время от времени (несколько раз в день) мы получим временные сбои, которые приводили к перезапуску программы вручную. Чтобы предотвратить это, я включил опцию EnableRetryOnFailure для UseSqlServer. Теперь программа больше не падает, но иногда принимает неправильные решения.
services.AddDbContext<DbContext>(options =>
{
options.UseSqlServer(connectionString, o =>
{
o.EnableRetryOnFailure();
});
});
Пример результатов запроса без EnableRetryOnFailure
:
Каждую секунду мы делаем SELECT count(*) FROM table
(через linq):
1500
1500
1500
1500
Exception: Transient Failure....
1500
1500
Пример результатов запроса с EnableRetryOnFailure
:
Каждую секунду мы делаем SELECT count(*) FROM table
(через linq):
1500
1500
1500
1500
0
1500
1500
Это известная ошибка в EF Core? Если что-то дает неправильные результаты, это МЕДШЕЕ, чем получение исключения. Приведет ли переключение на использование совместно используемой памяти к меньшим временным сбоям? Использование EF Core 2.2, .net Core 2.2 SQL Server 2014