Inheritance: DatabasePackageVersionTask
        public override void ExecuteCommand()
        {
            Log.Info(
                "Deleting package registration and all package versions for '{0}'.",
                PackageId);

            using (var sqlConnection = new SqlConnection(ConnectionString.ConnectionString))
            using (var dbExecutor = new SqlExecutor(sqlConnection))
            {
                sqlConnection.Open();

                var packageRegistration = Util.GetPackageRegistration(
                    dbExecutor,
                    PackageId);
                var packages = Util.GetPackages(
                    dbExecutor,
                    packageRegistration.Key);

                foreach(var package in packages)
                {
                    var task = new DeletePackageVersionTask {
                        ConnectionString = ConnectionString,
                        BackupStorage = BackupStorage,
                        StorageAccount = StorageAccount,
                        PackageId = package.Id,
                        PackageVersion = package.Version,
                        Reason = Reason,
                        WhatIf = WhatIf
                    };
                    task.ExecuteCommand();
                }

                Log.Info(
                    "Deleting package registration data for '{0}'",
                    packageRegistration.Id);
                if (!WhatIf)
                {
                    dbExecutor.Execute(
                        "DELETE por FROM PackageOwnerRequests por JOIN PackageRegistrations pr ON pr.[Key] = por.PackageRegistrationKey WHERE pr.[Key] = @packageRegistrationKey",
                        new { packageRegistrationKey = packageRegistration.Key });
                    dbExecutor.Execute(
                        "DELETE pro FROM PackageRegistrationOwners pro JOIN PackageRegistrations pr ON pr.[Key] = pro.PackageRegistrationKey WHERE pr.[Key] = @packageRegistrationKey",
                        new { packageRegistrationKey = packageRegistration.Key });
                    dbExecutor.Execute(
                        "DELETE FROM PackageRegistrations WHERE [Key] = @packageRegistrationKey",
                        new { packageRegistrationKey = packageRegistration.Key });
                }
            }

            Log.Info(
                "Deleted package registration and all package versions for '{0}'.",
                PackageId);
        }
        public override void ExecuteCommand()
        {
            Log.Info(
                "Deleting package registration and all package versions for '{0}'.",
                PackageId);

            using (var sqlConnection = new SqlConnection(ConnectionString.ConnectionString))
                using (var dbExecutor = new SqlExecutor(sqlConnection))
                {
                    sqlConnection.Open();

                    var packageRegistration = Util.GetPackageRegistration(
                        dbExecutor,
                        PackageId);
                    var packages = Util.GetPackages(
                        dbExecutor,
                        packageRegistration.Key);

                    foreach (var package in packages)
                    {
                        var task = new DeletePackageVersionTask {
                            ConnectionString = ConnectionString,
                            BackupStorage    = BackupStorage,
                            StorageAccount   = StorageAccount,
                            PackageId        = package.Id,
                            PackageVersion   = package.Version,
                            Reason           = Reason,
                            WhatIf           = WhatIf
                        };
                        task.ExecuteCommand();
                    }

                    Log.Info(
                        "Deleting package registration data for '{0}'",
                        packageRegistration.Id);
                    if (!WhatIf)
                    {
                        dbExecutor.Execute(
                            "DELETE por FROM PackageOwnerRequests por JOIN PackageRegistrations pr ON pr.[Key] = por.PackageRegistrationKey WHERE pr.[Key] = @packageRegistrationKey",
                            new { packageRegistrationKey = packageRegistration.Key });
                        dbExecutor.Execute(
                            "DELETE pro FROM PackageRegistrationOwners pro JOIN PackageRegistrations pr ON pr.[Key] = pro.PackageRegistrationKey WHERE pr.[Key] = @packageRegistrationKey",
                            new { packageRegistrationKey = packageRegistration.Key });
                        dbExecutor.Execute(
                            "DELETE FROM PackageRegistrations WHERE [Key] = @packageRegistrationKey",
                            new { packageRegistrationKey = packageRegistration.Key });
                    }
                }

            Log.Info(
                "Deleted package registration and all package versions for '{0}'.",
                PackageId);
        }