/// <summary>
        /// Creates a new import request
        /// </summary>
        /// <param name="importRequest">Import request parameters</param>
        /// <returns>Operation response including the OperationStatusLink to get the operation status</returns>
        public AzureSqlDatabaseImportExportBaseModel ImportNewDatabase(AzureSqlDatabaseImportModel importRequest)
        {
            Management.Sql.Models.ImportNewDatabaseDefinition parameters = new Management.Sql.Models.ImportNewDatabaseDefinition()
            {
                AdministratorLogin         = importRequest.AdministratorLogin,
                AdministratorLoginPassword = AzureSqlServerAdapter.Decrypt(importRequest.AdministratorLoginPassword),
                StorageKey           = importRequest.StorageKey,
                StorageKeyType       = importRequest.StorageKeyType.ToString(),
                StorageUri           = importRequest.StorageUri.ToString(),
                MaxSizeBytes         = importRequest.DatabaseMaxSizeBytes.ToString(),
                Edition              = importRequest.Edition != Database.Model.DatabaseEdition.None ? importRequest.Edition.ToString() : string.Empty,
                ServiceObjectiveName = importRequest.ServiceObjectiveName,
                DatabaseName         = importRequest.DatabaseName,
                NetworkIsolation     = new Management.Sql.Models.NetworkIsolationSettings()
                {
                    SqlServerResourceId      = importRequest.NetworkIsolationSettings.SqlServerResourceId,
                    StorageAccountResourceId = importRequest.NetworkIsolationSettings.StorageAccountResourceId
                }
            };

            if (importRequest.AuthenticationType != AuthenticationType.None)
            {
                parameters.AuthenticationType = importRequest.AuthenticationType.ToString().ToLowerInvariant();
            }

            Uri azureAsyncOperation = null;
            ImportExportOperationResult response;

            response = Communicator.BeginImportNewDatabase(importRequest.ResourceGroupName, importRequest.ServerName, parameters, out azureAsyncOperation);

            return(CreateImportExportResponse(response, importRequest, azureAsyncOperation));
        }
        /// <summary>
        /// Creates a new import request
        /// </summary>
        /// <param name="entity">Import Request Model</param>
        /// <returns>Import Request Response</returns>
        protected override AzureSqlDatabaseImportExportBaseModel PersistChanges(AzureSqlDatabaseImportExportBaseModel entity)
        {
            AzureSqlDatabaseImportModel importModel = entity as AzureSqlDatabaseImportModel;

            if (importModel == null)
            {
                throw new ArgumentNullException("importModel");
            }
            return(ModelAdapter.Import(importModel));
        }
        /// <summary>
        /// Updates the given model element with the cmdlet specific operation
        /// </summary>
        /// <param name="model">A model object</param>
        protected override AzureSqlDatabaseImportExportBaseModel ApplyUserInputToModel(AzureSqlDatabaseImportExportBaseModel model)
        {
            AzureSqlDatabaseImportModel exportRequest = new AzureSqlDatabaseImportModel()
            {
                ResourceGroupName          = ResourceGroupName,
                AdministratorLogin         = AdministratorLogin,
                AdministratorLoginPassword = AdministratorLoginPassword,
                AuthenticationType         = AuthenticationType,
                DatabaseName         = DatabaseName,
                ServerName           = ServerName,
                StorageKey           = StorageKey,
                StorageKeyType       = StorageKeyType,
                StorageUri           = StorageUri,
                Edition              = Edition,
                ServiceObjectiveName = ServiceObjectiveName,
                DatabaseMaxSizeBytes = DatabaseMaxSizeBytes
            };

            return(exportRequest);
        }
        /// <summary>
        /// Creates a new import request
        /// </summary>
        /// <param name="importRequest">Import request parameters</param>
        /// <returns>Operation response including the OperationStatusLink to get the operation status</returns>
        public AzureSqlDatabaseImportExportBaseModel Import(AzureSqlDatabaseImportModel importRequest)
        {
            ImportRequestParameters parameters = new ImportRequestParameters()
            {
                AdministratorLogin         = importRequest.AdministratorLogin,
                AdministratorLoginPassword = AzureSqlServerAdapter.Decrypt(importRequest.AdministratorLoginPassword),
                StorageKey           = importRequest.StorageKey,
                StorageKeyType       = importRequest.StorageKeyType.ToString(),
                StorageUri           = importRequest.StorageUri,
                DatabaseMaxSize      = importRequest.DatabaseMaxSizeBytes,
                Edition              = importRequest.Edition != Database.Model.DatabaseEdition.None ? importRequest.Edition.ToString() : string.Empty,
                ServiceObjectiveName = importRequest.ServiceObjectiveName,
                DatabaseName         = importRequest.DatabaseName
            };

            if (importRequest.AuthenticationType != AuthenticationType.None)
            {
                parameters.AuthenticationType = importRequest.AuthenticationType.ToString().ToLowerInvariant();
            }

            ImportExportResponse response = Communicator.Import(importRequest.ResourceGroupName, importRequest.ServerName, parameters, Util.GenerateTracingId());

            return(CreateImportExportResponse(response, importRequest));
        }