1. 安装 SqlSugar

在 .NET Core 中使用 SqlSugar,需要先安装 SqlSugar 包。可以通过 NuGet 包管理器或者 .NET CLI 进行安装。在本文中,我们使用 .NET CLI 安装 SqlSugar。

打开命令行窗口,进入项目根目录,输入以下命令安装 SqlSugar:

dotnet add package SqlSugar
  1. 配置数据库连接字符串

在 appsettings.json 文件中添加数据库连接字符串配置:

{
  "ConnectionStrings": {
    "DefaultConnection": "Server=localhost;Database=mydatabase;User Id=myuser;Password=mypassword;"
  }
}
  1. 创建备份文件夹

在项目根目录下创建一个名为 Backups 的文件夹,用于存放备份文件。

  1. 实现备份数据库

创建一个名为 BackupService 的服务类,用于备份数据库。该服务类需要注入 IConfiguration 和 IDbFactory 接口。

public class BackupService
{
    private readonly IConfiguration _configuration;
    private readonly IDbFactory _dbFactory;

    public BackupService(IConfiguration configuration, IDbFactory dbFactory)
    {
        _configuration = configuration;
        _dbFactory = dbFactory;
    }

    public async Task<string> BackupDatabase()
    {
        var connectionString = _configuration.GetConnectionString("DefaultConnection");
        var databaseName = new SqlConnectionStringBuilder(connectionString).InitialCatalog;
        var backupFileName = $"{databaseName}_{DateTime.Now:yyyyMMdd_HHmmss}.bak";
        var backupPath = Path.Combine("Backups", backupFileName);

        using var conn = _dbFactory.CreateConnection(connectionString);
        await conn.OpenAsync();

        using var cmd = conn.CreateCommand();
        cmd.CommandText = $"BACKUP DATABASE [{databaseName}] TO DISK = '{backupPath}' WITH INIT";
        await cmd.ExecuteNonQueryAsync();

        return backupFileName;
    }
}

该方法会创建备份文件名,并将备份文件存放在 Backups 文件夹中。然后,使用 SqlCommand 执行备份数据库的 SQL 命令。

  1. 实现下载备份文件

创建一个名为 BackupController 的控制器类,用于提供下载备份文件的接口。该控制器类需要注入 BackupService。

[ApiController]
[Route("api/[controller]")]
public class BackupController : ControllerBase
{
    private readonly BackupService _backupService;

    public BackupController(BackupService backupService)
    {
        _backupService = backupService;
    }

    [HttpGet]
    public async Task<IActionResult> DownloadBackup()
    {
        var backupFileName = await _backupService.BackupDatabase();
        var backupPath = Path.Combine("Backups", backupFileName);

        var memoryStream = new MemoryStream();
        using (var stream = new FileStream(backupPath, FileMode.Open))
        {
            await stream.CopyToAsync(memoryStream);
        }
        memoryStream.Position = 0;

        return File(memoryStream, "application/octet-stream", backupFileName);
    }
}

该方法会调用 BackupService 的 BackupDatabase 方法备份数据库,并返回备份文件的路径。然后,使用 FileStream 读取备份文件,并将备份文件写入 MemoryStream 中。最后,使用 File 方法返回下载文件的结果

net core 使用orm sqlsugar 实现在线备份数据库并下载

原文地址: https://www.cveoy.top/t/topic/eEkR 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录