/// <summary>
 /// Gets the task that executes the actions of a target.
 /// </summary>
 /// <param name="context"></param>
 /// <param name="target"></param>
 /// <param name="cancellationToken"></param>
 /// <returns></returns>
 Task GetExecuteTaskAsync(SqlDeploymentExecuteContext context, SqlDeploymentPlanTarget target, CancellationToken cancellationToken)
 {
     return(ExecuteAsync(context, target.Actions, cancellationToken));
 }
        /// <summary>
        /// Executes the given target.
        /// </summary>
        /// <param name="context"></param>
        /// <param name="target"></param>
        /// <param name="cancellationToken"></param>
        /// <returns></returns>
        async Task ExecuteAsync(SqlDeploymentExecuteContext context, SqlDeploymentPlanTarget target, CancellationToken cancellationToken)
        {
            await Task.WhenAll(target.DependsOn.Select(i => ExecuteAsync(context, i, cancellationToken)));

            await GetExecuteTaskAsync(context, target, cancellationToken);
        }