迁移

迁移

开发期间,数据模型将发生更改并与数据库不同步。可以删除该数据库,让 EF 创建一个新的数据库来匹配该模型,但此过程会导致数据丢失。EF Core 中的迁移功能能够以递增方式更新数据库架构,使其与应用程序的数据模型保持同步,同时保留数据库中的现有数据。

迁移包括命令行工具和 API,可帮助执行以下任务:

  • 创建迁移。生成可以更新数据库以使其与一系列模型更改同步的代码。
  • 更新数据库。应用挂起的迁移更新数据库架构。
  • 自定义迁移代码。有时,需要修改或补充生成的代码。
  • 删除迁移。删除生成的代码。
  • 还原迁移。撤消数据库更改。
  • 生成 SQL 脚本。可能需要一个脚本来更新生产数据库,或者对迁移代码进行故障排除。
  • 在运行时应用迁移。当设计时更新和正在运行脚本不是最佳选项时,调用 Migrate() 方法。

创建迁移

定义初始模型后,即应创建数据库。若要添加初始迁移,请运行以下命令。

Add-Migration InitialCreate

Migrations 目录下的项目添加以下三个文件:

  • XXXXXXXXXXXXXX_InitialCreate.cs — 主迁移文件。包含应用迁移所需的操作(在 Up() 中)和还原迁移所需的操作(在 Down() 中)。
  • XXXXXXXXXXXXXX_InitialCreate.Designer.cs — 迁移元数据文件。包含 EF 所用的信息。
  • MyContextModelSnapshot.cs — 当前模型的快照。用于确定添加下一迁移时的更改内容。

文件名中的时间戳有助于保持文件按时间顺序排列,以便你可以查看更改进展。

更新数据库

接下来,将迁移应用到数据库以创建架构。

Update-Database

删除迁移

有时,你可能在添加迁移后意识到需要在应用迁移前对 EF Core 模型作出其他更改。要删除上个迁移,请使用如下命令。

Remove-Migration

还原迁移

如果已对数据库应用一个迁移(或多个迁移),但需将其复原,则可使用同一命令来应用迁移,并指定回退时的目标迁移名称。

Update-Database LastGoodMigration

生成 SQL 脚本

调试迁移或将其部署到生产数据库时,生成一个 SQL 脚本很有帮助。之后可进一步检查该脚本的准确性,并对其作出调整以满足生产数据库的需求。该脚本还可与部署技术结合使用。基本命令如下:

Script-Migration

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注