/// <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
Yorum Gönder