Ana içeriğe atla

NopCommerce SQLite Backup and Restore


        /// <summary>

        /// Creates a backup of the database 

        /// </summary>

        public virtual Task BackupDatabaseAsync(string fileName)

        {

            try

            {

                var backup = new SqliteConnection($"Data Source={fileName}");

                var dbConnection = new SqliteConnection(DataSettingsManager.LoadSettings().ConnectionString);

                dbConnection.Open();

                dbConnection.BackupDatabase(backup);

                //SqliteConnection.ClearPool(dbConnection);

                dbConnection.Close();

                SqliteConnection.ClearPool(backup);

                backup.Close();

                return Task.CompletedTask;

            }

            catch (Exception exc)

            {

                throw new DataException("An error has occurred! Detail: " + exc);

            }

        }


        /// <summary>

        /// Restores the database from a backup

        /// </summary>

        /// <param name="backupFileName">The name of the backup file</param>

        public virtual Task RestoreDatabaseAsync(string backupFileName)

        {

            try

            {

                var restoreFileName = backupFileName.Replace(@"\wwwroot\..\App_Data\db_backups\", @"\App_Data\db_backups\");

                var backupConnection = DataSettingsManager.LoadSettings().ConnectionString;//.Replace(@"App_Data\", @"App_Data\db_backups");

                var backup = new SqliteConnection("Data Source=" + restoreFileName.Split(@"App_Data\")[0] + backupConnection.Split("Data Source=")[1]);

                var connection = new SqliteConnection("Data Source=" + restoreFileName.Split(@"Nop.Web\")[1]);

                connection.Open();

                connection.BackupDatabase(backup);

                SqliteConnection.ClearPool(connection);

                connection.Close();

                SqliteConnection.ClearPool(backup);

                backup.Close();

            }

            catch (Exception exc)

            {

                throw new DataException("An error has occurred! Detail: " + exc);

            }


            return Task.CompletedTask;

        }


Yorumlar