DbExecutionStrategy 类

[本页针对的是实体框架版本 6。最新版本以“实体框架”NuGet 包的形式提供。有关实体框架的更多信息,请参见 msdn.com/data/ef。]

为在两次重试之间使用以指数形式增长的延迟时间的不可靠操作和瞬时条件提供重试机制的基实现。

继承层次结构

System.Object
  System.Data.Entity.Infrastructure.DbExecutionStrategy
    System.Data.Entity.SqlServer.SqlAzureExecutionStrategy

命名空间:  System.Data.Entity.Infrastructure
程序集:  EntityFramework(在 EntityFramework.dll 中)

语法

声明
Public MustInherit Class DbExecutionStrategy _
    Implements IDbExecutionStrategy
用法
Dim instance As DbExecutionStrategy
public abstract class DbExecutionStrategy : IDbExecutionStrategy
public ref class DbExecutionStrategy abstract : IDbExecutionStrategy
[<AbstractClassAttribute>]
type DbExecutionStrategy =  
    class 
        interface IDbExecutionStrategy 
    end
public abstract class DbExecutionStrategy implements IDbExecutionStrategy

DbExecutionStrategy 类型公开以下成员。

构造函数

  名称 描述
受保护的方法 DbExecutionStrategy() 初始化 DbExecutionStrategy 类的新实例。
受保护的方法 DbExecutionStrategy(Int32, TimeSpan) 使用指定的重试次数限制值和两次重试之间的延迟时间初始化 DbExecutionStrategy 类的新实例。

顶部

属性

  名称 描述
公共属性 RetriesOnFailure 获取一个值,该值指示此 DbExecutionStrategy 在失败后是否可能重试执行。

顶部

方法

  名称 描述
公共方法 Equals (继承自 Object。)
公共方法 Execute(Action) 在指定操作满足当前重试策略时重复执行此操作。
公共方法 Execute<TResult>(Func<TResult>) 在指定操作满足当前重试策略时重复执行此操作。
公共方法 ExecuteAsync(Func<Task>, CancellationToken) 在指定异步操作满足当前重试策略时重复执行此操作。
公共方法 ExecuteAsync<TResult>(Func<Task<TResult>>, CancellationToken) 在指定异步操作满足当前重试策略时重复执行此操作。
受保护的方法 Finalize (继承自 Object。)
公共方法 GetHashCode (继承自 Object。)
受保护的方法 GetNextDelay 确定是否应重试操作以及在下次重试前的延迟时间。
公共方法 GetType (继承自 Object。)
受保护的方法 MemberwiseClone (继承自 Object。)
受保护的方法 ShouldRetryOn 确定指定的异常是否表示可以通过重试解决的瞬态失败。
公共方法 ToString (继承自 Object。)
公共方法静态成员 UnwrapAndHandleException<T> 只要它是 EntityExceptionDbUpdateExceptionUpdateException,就以递归方式从 exception 获取 InnerException,并将其传递给 exceptionHandler。

顶部

备注

每次执行操作时将创建一个新实例。 以下公式用于计算 retryCount 次尝试后的延迟时间:min(random(1, 1.1) * (2 ^ retryCount - 1), maxDelay) retryCount 从 0 开始。 随机因子将重试次数均匀分布到同时失败的多个同时执行的操作。

线程安全

此类型的任何公共 static(在 Visual Basic 中为 Shared) 成员都是线程安全的。但不保证所有实例成员都是线程安全的。

请参阅

参考

System.Data.Entity.Infrastructure 命名空间