练习 - 将 SQLite 数据库提供程序与 EF Core 结合使用
直到现在,你一直在使用内存数据库保存数据。 开发应用程序时,此数据库易于设置和使用,但数据并不持久。 因此,重启应用程序时,数据将丢失。 在部署应用程序之前,需要将数据保存到数据库。
在本练习中,你将升级应用程序以使用关系数据库来存储数据。 你将使用 SQLite 来存储数据。
设置 SQLite 数据库
完成以下部分以设置 SQLite 数据库。
安装以下工具和包
在终端中,安装以下包:
SQLite EF Core 数据库提供程序:可以通过称为 数据库提供程序的插件库访问许多不同的数据库。 以下包是 Entity Framework (EF) Core 的 SQLite 数据库提供程序。
dotnet add package Microsoft.EntityFrameworkCore.Sqlite --version 8.0
EF Core 工具:EF Core 工具执行设计时开发任务。 例如,它们创建迁移、应用迁移,并根据现有数据库为模型生成代码。
dotnet tool install --global dotnet-ef
Microsoft.EntityFrameworkCore.Design:包含 EF Core 创建数据库的所有设计时逻辑。
dotnet add package Microsoft.EntityFrameworkCore.Design --version 8.0
启用数据库创建
若要启用数据库创建,需要设置数据库连接字符串。 然后将数据模型迁移到 SQLite 数据库。
在 Program.cs下
var builder = WebApplication.CreateBuilder(args);
添加连接字符串。var connectionString = builder.Configuration.GetConnectionString("Pizzas") ?? "Data Source=Pizzas.db";
此代码检查配置提供程序是否有名为 Pizzas 的连接字符串。 如果未找到连接字符串,它将使用
Data Source=Pizzas.db
作为连接字符串。 SQLite 会将此字符串映射到文件。在本教程的 CRUD 部分中,你使用了内存中数据库。 现在,你将将内存中数据库替换为永久性数据库。
将生成服务中的当前内存中数据库实现
builder.Services.AddDbContext<PizzaDb>(options => options.UseInMemoryDatabase("items"));
替换为此处的 SQLite 数据库:builder.Services.AddSqlite<PizzaDb>(connectionString);
使用 EF Core 迁移工具,您现在可以生成您的第一个迁移。
InitialCreate
保存所有更改,然后运行以下命令:dotnet ef migrations add InitialCreate
EF Core 在项目目录中创建 一个迁移 文件夹,其中包含两个文件,其中包含表示数据库迁移的代码。
完成迁移后,即可使用它来创建数据库和架构。
在终端窗口中运行以下命令
database update
,将迁移应用到数据库:dotnet ef database update
应在项目目录中看到新创建的 Pizzas.db 文件。
运行并测试应用程序
有了后盾数据库后,所做的更改将持久保存。
使用 dotnet run
和 Swagger UI 像之前一样测试应用程序。 使用 Ctrl+C 命令停止应用程序。 然后再次运行它,并验证更改是否仍保留在 Pizzas.db中。
祝贺! 你已将一个数据库与最小 API 相连!