Sdílet prostřednictvím


DbExecutionStrategy Třída

Definice

Poskytuje základní implementaci mechanismu opakování pro nespolehlivé operace a přechodné podmínky, které používají exponenciálně rostoucí zpoždění mezi opakováními.

public abstract class DbExecutionStrategy : System.Data.Entity.Infrastructure.IDbExecutionStrategy
type DbExecutionStrategy = class
    interface IDbExecutionStrategy
Public MustInherit Class DbExecutionStrategy
Implements IDbExecutionStrategy
Dědičnost
DbExecutionStrategy
Odvozené
Implementuje

Poznámky

Při každém spuštění operace se vytvoří nová instance. Následující vzorec se používá k výpočtu zpoždění po retryCount počtu pokusů: min(random(1, 1.1) * (2 ^ retryCount - 1), maxDelay) Začíná retryCount na 0. Náhodný faktor rovnoměrně distribuuje opakované pokusy z více souběžných operací, které selhávají současně.

Konstruktory

DbExecutionStrategy()

Vytvoří novou instanci položky DbExecutionStrategy.

DbExecutionStrategy(Int32, TimeSpan)

Vytvoří novou instanci s DbExecutionStrategy určenými limity počtu opakování a zpoždění mezi opakováními.

Vlastnosti

RetriesOnFailure

Vrátí true hodnotu, která značí, že DbExecutionStrategy by se po selhání mohlo zkusit provést znovu.

Suspended

Určuje, jestli je strategie pozastavená. Strategií je obvykle pozastavení při provádění, aby se zabránilo rekurzivnímu provádění z vnořených operací.

Metody

Execute(Action)

Opakovaně provádí zadanou operaci, zatímco splňuje aktuální zásady opakování.

Execute<TResult>(Func<TResult>)

Opakovaně provádí zadanou operaci, zatímco splňuje aktuální zásady opakování.

ExecuteAsync(Func<Task>, CancellationToken)

Opakovaně spustí zadanou asynchronní operaci, zatímco splňuje aktuální zásady opakování.

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

Opakovaně provádí zadanou asynchronní operaci, zatímco splňuje aktuální zásady opakování.

GetNextDelay(Exception)

Určuje, zda se má operace opakovat, a zpoždění před dalším pokusem.

ShouldRetryOn(Exception)

Určuje, zda zadaná výjimka představuje přechodné selhání, které lze nahradit opakováním.

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

Rekurzivně získá InnerException z exception , pokud je EntityExceptionto , DbUpdateException nebo UpdateException a předá ho do exceptionHandler

Platí pro