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);