Поделиться через


DbExecutionStrategy Класс

Определение

Предоставляет базовую реализацию механизма повторных попыток для ненадежных операций и временных условий, в которых используются экспоненциально увеличивающиеся задержки между повторными попытками.

public abstract class DbExecutionStrategy : System.Data.Entity.Infrastructure.IDbExecutionStrategy
type DbExecutionStrategy = class
    interface IDbExecutionStrategy
Public MustInherit Class DbExecutionStrategy
Implements IDbExecutionStrategy
Наследование
DbExecutionStrategy
Производный
Реализации

Комментарии

Новый экземпляр будет создаваться при каждом выполнении операции. Для вычисления задержки после retryCount числа попыток используется следующая формула: min(random(1, 1.1) * (2 ^ retryCount - 1), maxDelay) начинается retryCount с 0. Случайный фактор равномерно распределяет повторные попытки из нескольких одновременных операций, завершающихся сбоем одновременно.

Конструкторы

DbExecutionStrategy()

Создает новый экземпляр DbExecutionStrategy.

DbExecutionStrategy(Int32, TimeSpan)

Создает новый экземпляр DbExecutionStrategy с указанными ограничениями на количество повторных попыток и задержку между повторными попытками.

Свойства

RetriesOnFailure

Возвращает true значение , указывающее, что DbExecutionStrategy может повторить выполнение после сбоя.

Suspended

Указывает, приостановлена ли стратегия. Стратегия обычно приостанавливается во время выполнения, чтобы избежать рекурсивного выполнения вложенных операций.

Методы

Execute(Action)

Повторно выполняет указанную операцию, когда она удовлетворяет текущей политике повторных попыток.

Execute<TResult>(Func<TResult>)

Повторно выполняет указанную операцию, когда она удовлетворяет текущей политике повторных попыток.

ExecuteAsync(Func<Task>, CancellationToken)

Повторно выполняет указанную асинхронную операцию, удовлетворяющую текущей политике повторных попыток.

ExecuteAsync<TResult>(Func<Task<TResult>>, CancellationToken)

Многократно выполняет указанную асинхронную операцию, удовлетворяющую текущей политике повторных попыток.

GetNextDelay(Exception)

Определяет, следует ли повторять операцию и задержку перед следующей попыткой.

ShouldRetryOn(Exception)

Определяет, представляет ли указанное исключение временный сбой, который может быть компенсирован повторным повтором.

UnwrapAndHandleException<T>(Exception, Func<Exception,T>)

Рекурсивно получает InnerException от exception , если это EntityException, DbUpdateException или UpdateException и передает его в exceptionHandler

Применяется к