迁移
开发期间,数据模型将发生更改并与数据库不同步。可以删除该数据库,让 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
Previous: 无键实体类型查询数据库视图
Next: LINQ 查询