20 数据访问之数据库迁移

在前一篇中,我们介绍了如何使用 Entity Framework Core 与数据库进行交互。在本篇中,我们将讨论数据库迁移的概念,以及如何使用 Entity Framework Core 进行数据库的版本管理和迁移。这一过程对于确保数据库结构与应用程序模型的一致性至关重要。

什么是数据库迁移?

数据库迁移是指对数据库结构的版本管理,它帮助开发者在更改数据模型时同步更新数据库。通过迁移,我们可以轻松地添加、修改或删除数据库中的表、列及其约束,而无需手动编写 SQL 语句。

为什么要使用数据库迁移?

  • 版本控制:迁移文件可以作为代码的一部分进行版本控制,这样我们可以记录所有的数据库更改。
  • 简化更新:通过迁移,可以一步到位地将新的数据库结构应用于现有数据库。
  • 协作开发:在团队开发中,通过迁移文件,团队成员可以获取最新的数据库更改,并通过迁移确保本地数据库与主数据库一致。

创建数据库迁移

在开始之前,请确保您已经安装了 Entity Framework Core 并创建了一个数据模型。现在,我们将完成以下步骤:

  1. 创建迁移
  2. 应用迁移

假设我们在前一篇中定义了一个简单的 Product 模型,代码如下面所示:

1
2
3
4
5
6
public class Product
{
public int Id { get; set; }
public string Name { get; set; }
public decimal Price { get; set; }
}

1. 创建迁移

确保您已在项目根目录中打开终端,然后运行以下命令以创建迁移:

1
dotnet ef migrations add InitialCreate

上面的命令会生成一个迁移文件,该文件包含将 Product 类映射到数据库表的代码。迁移文件将位于项目的 Migrations 文件夹中,命名规则为 时间戳_迁移名称

2. 应用迁移

创建迁移后,我们需要将其应用到数据库,以创建相应的表。执行以下命令:

1
dotnet ef database update

此命令将数据库更新到最新的迁移状态。在这个过程中,Entity Framework Core 将应用所有未应用的迁移,并在数据库中创建 Products 表。

迁移示例

以下是迁移自动生成的一个示例代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
public partial class InitialCreate : Migration
{
protected override void Up(MigrationBuilder migrationBuilder)
{
migrationBuilder.CreateTable(
name: "Products",
columns: table => new
{
Id = table.Column<int>(nullable: false)
.Annotation("SqlServer:Identity", "1, 1"),
Name = table.Column<string>(nullable: true),
Price = table.Column<decimal>(nullable: false)
},
constraints: table =>
{
table.PrimaryKey("PK_Products", x => x.Id);
});
}

protected override void Down(MigrationBuilder migrationBuilder)
{
migrationBuilder.DropTable(
name: "Products");
}
}

在上述代码中,Up 方法定义了迁移时要执行的操作,而 Down 方法定义了回滚迁移时要执行的操作。

迁移变更

当我们需要更改模型时,例如添加一个新的 Category 属性到 Product 类中,首先修改 Product 类:

1
2
3
4
5
6
7
public class Product
{
public int Id { get; set; }
public string Name { get; set; }
public decimal Price { get; set; }
public string Category { get; set; } // 新增字段
}

接下来,我们再次创建新的迁移:

1
dotnet ef migrations add AddCategoryToProduct

最后,应用新的迁移:

1
dotnet ef database update

迁移的最佳实践

  1. 频繁迁移:尽量保持小而频繁的迁移,这样可以减少合并冲突和错误的可能性。
  2. 代码审查:在迁移后,确保进行代码审查,以捕捉可能的数据库设计问题。
  3. 数据迁移:如果需要,在迁移中使用 SQLC# 代码迁移现有数据,确保新字段的数据一致性。

总结

在本篇中,我们学习了Entity Framework Core 中数据库迁移的基本概念及其操作步骤。通过创建和应用迁移,我们能够确保模型与数据库之间的一致性,使数据库管理变得更加简单和高效。接下来的内容将会讨论如何在数据库中执行 CRUD 操作,这是应用程序开发的重要组成部分。

20 数据访问之数据库迁移

https://zglg.work/aspnet-core-zero/20/

作者

IT教程网(郭震)

发布于

2024-08-15

更新于

2024-08-16

许可协议

分享转发

交流

更多教程加公众号

更多教程加公众号

加入星球获取PDF

加入星球获取PDF

打卡评论