当SqlAzureExecutionStrategy重试Entity Framework操作时,我该如何记录日志?当使用瞬态故障处理逻辑与常规的SqlConnection调用时,会公开一个Retrying事件。使用Entity Framework 6和SqlAzureExecutionStrategy时是否有类似的功能?如果没有,还有其他选择吗?
当SqlAzureExecutionStrategy重试Entity Framework操作时,我该如何记录日志?当使用瞬态故障处理逻辑与常规的SqlConnection调用时,会公开一个Retrying事件。使用Entity Framework 6和SqlAzureExecutionStrategy时是否有类似的功能?如果没有,还有其他选择吗?
你可以创建一个继承自SqlAzureExecutionStrategy的自定义ExecutionStrategy,并且重写ShouldRetryOn方法:
public class LoggedSqlAzureExecutionStrategy : SqlAzureExecutionStrategy
{
protected override bool ShouldRetryOn(Exception exception)
{
var shouldRetry = base.ShouldRetryOn(exception);
if (shouldRetry)
{
// log exception
}
return shouldRetry;
}
}