/// <summary>
 /// Validate the object.
 /// </summary>
 /// <exception cref="ValidationException">
 /// Thrown if validation fails
 /// </exception>
 public virtual void Validate()
 {
     if (BackupRequestName == null)
     {
         throw new ValidationException(ValidationRules.CannotBeNull, "BackupRequestName");
     }
     if (StorageAccountUrl == null)
     {
         throw new ValidationException(ValidationRules.CannotBeNull, "StorageAccountUrl");
     }
     if (BackupSchedule != null)
     {
         BackupSchedule.Validate();
     }
     if (Databases != null)
     {
         foreach (var element in Databases)
         {
             if (element != null)
             {
                 element.Validate();
             }
         }
     }
 }
 /// <summary>
 /// Initializes a new instance of the BackupRequest class.
 /// </summary>
 /// <param name="backupRequestName">Name of the backup.</param>
 /// <param name="storageAccountUrl">SAS URL to the container.</param>
 /// <param name="id">Resource Id.</param>
 /// <param name="name">Resource Name.</param>
 /// <param name="kind">Kind of resource.</param>
 /// <param name="type">Resource type.</param>
 /// <param name="enabled">True if the backup schedule is enabled (must
 /// be included in that case), false if the backup schedule should be
 /// disabled.</param>
 /// <param name="backupSchedule">Schedule for the backup if it is
 /// executed periodically.</param>
 /// <param name="databases">Databases included in the backup.</param>
 /// <param name="backupRequestType">Type of the backup. Possible values
 /// include: 'Default', 'Clone', 'Relocation', 'Snapshot'</param>
 public BackupRequest(string backupRequestName, string storageAccountUrl, string id = default(string), string name = default(string), string kind = default(string), string type = default(string), bool?enabled = default(bool?), BackupSchedule backupSchedule = default(BackupSchedule), IList <DatabaseBackupSetting> databases = default(IList <DatabaseBackupSetting>), BackupRestoreOperationType?backupRequestType = default(BackupRestoreOperationType?))
     : base(id, name, kind, type)
 {
     BackupRequestName = backupRequestName;
     Enabled           = enabled;
     StorageAccountUrl = storageAccountUrl;
     BackupSchedule    = backupSchedule;
     Databases         = databases;
     BackupRequestType = backupRequestType;
     CustomInit();
 }