ASP.NET Core 使用 Entity Framework 迁移

本篇介绍利用 Entity Framework 的迁移技术,通过模型来创建数据库。在开发阶段,数据模型会频繁改动。每当模型发生改变时,也可以通过迁移来让数据库也做出同样的改动。

在应用迁移之前先做一些准备工作,在数据库上下文类中添加红框内的代码,将模型绑定到上下文对象:

右键点击项目,选择 "在终端中打开" 或 "Open In Terminal" 打开命令行工具,输入以下命令,安装最新版的 Microsoft.EntityFrameworkCore.Design

  1. dotnet add package Microsoft.EntityFrameworkCore.Design

确保您的 Microsoft.EntityFrameworkCore.DesignMicrosoft.EntityFrameworkCore 版本保持一致。同时确保所有文档都已保存并且项目能顺利编译通过,在刚刚打开的命令行工具输入以下命令创建迁移:

  1. dotnet ef migrations add init

现在我们创建了一个迁移,并把它命名为 init。这时项目多出来一个文件夹 Migrations 里面的文件定义了本次迁移要执行的代码。打开以数字开头、_init 结尾的那个文件(其实数字是时间的数字表示形式,当有多个迁移文件时会根据数字进行排序方便找到最新的迁移文件),可以看到里面主要有 2 个方法:UpDown

  • Up 方法:本次是第一次执行迁移,这个方法要做的事就是根据前面模型的配置创建表、字段、关系等等。
  • Down方法:这个方法和Up方法相反,如果某种原因需要回退就会被执行。

要删除迁移可以执行以下命令:

  1. dotnet ef migrations remove

执行命令后会删除最新的那个迁移,重复执行该命令会继续删除最新的迁移。

继续在命令行工具输入以下命令执行迁移:

  1. dotnet ef database update

这时,打开您的数据库,可以发现,EF 已经将表建好。


更新数据

在创建和应用迁移后,以后可能随着业务的需要要改变模型,比如重命名某个表的列,这时需要创建新的迁移。比如重命名 Employee 的列 NameEmployeeName

  1. namespace MyFirstCoreWebApp.Models
  2. {
  3. public class Employee
  4. {
  5. public int ID { get; set; }
  6. public string EmployeeName { get; set; }
  7. public DateTime EntryDate { get; set; }
  8. }
  9. }

保存文档并在命令行工具输入创建迁移的命令:

  1. dotnet ef migrations add ResetEmployeeName

执行完毕后创建了以 _ResetEmployeeName 结尾的迁移文件,打开可以看到 Up 方法内的代码:

继续在命令行工具输入更新数据库的命令:

  1. dotnet ef database update

Employee 的字段 EmployeeName 就被命名为 EmployeeName

到目前为止,前期的工作已经做好了,创建了数据库上下文对象 DbContext,创建和配置好了模型,生成了数据库,接下来的章节,我们学习如何新增修数据。

分类导航