Azure sql database 正在重试SqlAzureExecutionStrategy的事件

Azure sql database 正在重试SqlAzureExecutionStrategy的事件,azure-sql-database,entity-framework-6,Azure Sql Database,Entity Framework 6,使用SQL Azure时,如果我创建自己的RetryPolicy,例如: var retryStrategy = new FixedInterval(3, TimeSpan.FromSeconds(10)); var retryPolicySQL = new RetryPolicy<SqlAzureTransientErrorDetectionStrategy>(retryStrategy); retryPolicySQL.Retry

使用SQL Azure时,如果我创建自己的RetryPolicy,例如:

        var retryStrategy = new FixedInterval(3, TimeSpan.FromSeconds(10));

        var retryPolicySQL = new RetryPolicy<SqlAzureTransientErrorDetectionStrategy>(retryStrategy);
        retryPolicySQL.Retrying += ....;

我似乎找不到一种方法来加入重试过程。有办法做到这一点吗?

通过从SqlAzureExecutionStrategy子类化来实现名为ShouldRetryOn的受保护方法。在该方法中,您可以将您的逻辑记录到日志中,或者将其挂接到处理程序中,如下所示

public委托void changedventhadler(对象发送方,事件参数e);
公共类MyStrategy:SqlAzureExecutionStrategy
{
公共事件变更事件处理者变更;
受保护的覆盖布尔ShouldRetryOn(异常)
{
一旦更改(EventArgs.Empty);
返回基.ShouldRetryOn(异常);
}
受保护的虚拟void一旦更改(EventArgs e)
{
如果(已更改!=null)
改变(本,e);
}
}

通过从SqlAzureExecutionStrategy子类化来实现名为ShouldRetryOn的受保护方法。在该方法中,您可以将您的逻辑记录到日志中,或者将其挂接到处理程序中,如下所示

public委托void changedventhadler(对象发送方,事件参数e);
公共类MyStrategy:SqlAzureExecutionStrategy
{
公共事件变更事件处理者变更;
受保护的覆盖布尔ShouldRetryOn(异常)
{
一旦更改(EventArgs.Empty);
返回基.ShouldRetryOn(异常);
}
受保护的虚拟void一旦更改(EventArgs e)
{
如果(已更改!=null)
改变(本,e);
}
}

如果您希望只记录异常或重试,可以执行以下操作:

public class LoggedSqlAzureExecutionStrategy : SqlAzureExecutionStrategy
{
  protected override bool ShouldRetryOn(Exception exception)
  {
    var shouldRetry = base.ShouldRetryOn(exception);
    if (shouldRetry)
    {
      // log retry
    }

    return shouldRetry;
  }
}

如果希望只记录异常或重试,可以执行以下操作:

public class LoggedSqlAzureExecutionStrategy : SqlAzureExecutionStrategy
{
  protected override bool ShouldRetryOn(Exception exception)
  {
    var shouldRetry = base.ShouldRetryOn(exception);
    if (shouldRetry)
    {
      // log retry
    }

    return shouldRetry;
  }
}

谢谢-我最后也这么做了,但是覆盖了“受保护覆盖时间跨度”?GetNextDelay(Exception lastException)”,我想它给了我同等的异常信息。谢谢-我最后也做了同样的事情,但是覆盖了“受保护的覆盖时间跨度”?GetNextDelay(Exception lastException)”,我认为它提供了等效的异常信息。请不要对多个问题给出相同的答案。发布一个好的答案,然后投票/标记以重复结束其他问题。如果问题不是重复的,请根据问题定制您的答案。我将调整我的答案。请不要在多个问题上发布相同的答案。发布一个好的答案,然后投票/标记以重复结束其他问题。如果这个问题不是重复的,那就根据这个问题调整你的答案。我会调整我的答案。