public override void Apply(CommandFilterContext filterContext, Action commandInvocation) { var attempt = 0; while (true) { attempt++; try { commandInvocation(); return; } catch (Exception ex) { if (!SqlExceptionHelper.IsDeadlock(ex)) { throw; } if (attempt >= RetryAttemptsCount) { throw; } } } }
/// <summary> /// Применяет фильтр к выполнению команды. /// </summary> /// <param name="filterContext">Контекст выполнения команды.</param> /// <param name="commandInvocation">Делегат вызова команды и её примененных фильтров.</param> public abstract void Apply(CommandFilterContext filterContext, Action commandInvocation);