Udostępnij za pośrednictwem


DbExecutionStrategy Klasa

Definicja

Zapewnia podstawową implementację mechanizmu ponawiania prób dla zawodnych operacji i przejściowych warunków, które wykorzystują wykładniczo rosnące opóźnienia między ponawiania próbami.

public abstract class DbExecutionStrategy : System.Data.Entity.Infrastructure.IDbExecutionStrategy
type DbExecutionStrategy = class
    interface IDbExecutionStrategy
Public MustInherit Class DbExecutionStrategy
Implements IDbExecutionStrategy
Dziedziczenie
DbExecutionStrategy
Pochodne
Implementuje

Uwagi

Nowe wystąpienie zostanie utworzone przy każdym wykonaniu operacji. Poniższa formuła służy do obliczania opóźnienia po retryCount liczbie prób: min(random(1, 1.1) * (2 ^ retryCount - 1), maxDelay) rozpoczyna retryCount się od 0. Współczynnik losowy równomiernie dystrybuuje próby ponawiania z wielu jednoczesnych operacji zakończonych niepowodzeniem jednocześnie.

Konstruktory

DbExecutionStrategy()

Tworzy nowe wystąpienie klasy DbExecutionStrategy.

DbExecutionStrategy(Int32, TimeSpan)

Tworzy nowe wystąpienie programu DbExecutionStrategy z określonymi limitami liczby ponownych prób i opóźnienia między ponownymi próbami.

Właściwości

RetriesOnFailure

Zwraca wartość true , aby wskazać, że DbExecutionStrategy może ponowić próbę wykonania po awarii.

Suspended

Wskazuje, czy strategia jest zawieszona. Strategia jest zwykle zawieszana podczas wykonywania, aby uniknąć cyklicznego wykonywania z zagnieżdżonych operacji.

Metody

Execute(Action)

Powtarzalnie wykonuje określoną operację, gdy spełnia ona bieżące zasady ponawiania.

Execute<TResult>(Func<TResult>)

Powtarzalnie wykonuje określoną operację, gdy spełnia ona bieżące zasady ponawiania.

ExecuteAsync(Func<Task>, CancellationToken)

Powtarzalnie wykonuje określoną operację asynchroniczną, gdy spełnia ona bieżące zasady ponawiania.

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

Wielokrotnie wykonuje określoną operację asynchroniczną, gdy spełnia ona bieżące zasady ponawiania.

GetNextDelay(Exception)

Określa, czy operacja powinna zostać ponowiona, a opóźnienie przed następną próbą.

ShouldRetryOn(Exception)

Określa, czy określony wyjątek reprezentuje błąd przejściowy, który może zostać zrekompensowany przez ponowienie próby.

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

Rekursywnie pobiera wyjątek InnerException z exception tak długo, jak jest EntityExceptionto element , DbUpdateException lub UpdateException i przekazuje go do exceptionHandler

Dotyczy