练习 - 将 SQLite 数据库提供程序与 EF Core 结合使用

已完成

直到现在,你一直在使用内存数据库保存数据。 开发应用程序时,此数据库易于设置和使用,但数据并不持久。 因此,重启应用程序时,数据将丢失。 在部署应用程序之前,需要将数据保存到数据库。

在本练习中,你将升级应用程序以使用关系数据库来存储数据。 你将使用 SQLite 来存储数据。

设置 SQLite 数据库

完成以下部分以设置 SQLite 数据库。

安装以下工具和包

在终端中,安装以下包:

  1. SQLite EF Core 数据库提供程序:可以通过称为 数据库提供程序的插件库访问许多不同的数据库。 以下包是 Entity Framework (EF) Core 的 SQLite 数据库提供程序。

    dotnet add package Microsoft.EntityFrameworkCore.Sqlite --version 8.0
    
  2. EF Core 工具:EF Core 工具执行设计时开发任务。 例如,它们创建迁移、应用迁移,并根据现有数据库为模型生成代码。

    dotnet tool install --global dotnet-ef
    
  3. Microsoft.EntityFrameworkCore.Design:包含 EF Core 创建数据库的所有设计时逻辑。

    dotnet add package Microsoft.EntityFrameworkCore.Design --version 8.0
    

启用数据库创建

若要启用数据库创建,需要设置数据库连接字符串。 然后将数据模型迁移到 SQLite 数据库。

  1. Program.csvar builder = WebApplication.CreateBuilder(args);添加连接字符串。

    var connectionString = builder.Configuration.GetConnectionString("Pizzas") ?? "Data Source=Pizzas.db";
    

    此代码检查配置提供程序是否有名为 Pizzas 的连接字符串。 如果未找到连接字符串,它将使用Data Source=Pizzas.db作为连接字符串。 SQLite 会将此字符串映射到文件。

  2. 在本教程的 CRUD 部分中,你使用了内存中数据库。 现在,你将将内存中数据库替换为永久性数据库。

    将生成服务中的当前内存中数据库实现 builder.Services.AddDbContext<PizzaDb>(options => options.UseInMemoryDatabase("items")); 替换为此处的 SQLite 数据库:

    builder.Services.AddSqlite<PizzaDb>(connectionString);
    
  3. 使用 EF Core 迁移工具,您现在可以生成您的第一个迁移。 InitialCreate 保存所有更改,然后运行以下命令:

    dotnet ef migrations add InitialCreate
    

    EF Core 在项目目录中创建 一个迁移 文件夹,其中包含两个文件,其中包含表示数据库迁移的代码。

  4. 完成迁移后,即可使用它来创建数据库和架构。

    在终端窗口中运行以下命令 database update ,将迁移应用到数据库:

    dotnet ef database update
    

    应在项目目录中看到新创建的 Pizzas.db 文件。

运行并测试应用程序

有了后盾数据库后,所做的更改将持久保存。

使用 dotnet run 和 Swagger UI 像之前一样测试应用程序。 使用 Ctrl+C 命令停止应用程序。 然后再次运行它,并验证更改是否仍保留在 Pizzas.db中。

祝贺! 你已将一个数据库与最小 API 相连!