[文章内容来源于Microsoft Doc]
开发期间,数据模型将发生更改并与数据库不同步。 可以删除该数据库,让 EF 创建一个新的数据库来匹配该模型,但此过程会导致数据丢失。 EF Core 中的迁移功能能够以递增方式更新数据库架构,使其与应用程序的数据模型保持同步,同时保留数据库中的现有数据。
迁移包括命令行工具和 API,可帮助执行以下任务:
- 创建迁移。 生成可以更新数据库以使其与一系列模型更改同步的代码。
- 更新数据库。 应用挂起的迁移更新数据库架构。
- 自定义迁移代码。 有时,需要修改或补充生成的代码。
- 删除迁移。 删除生成的代码。
- 还原迁移。 撤消数据库更改。(sqlite不支持表和字段的重命名等给还原带来很多问题)
- 生成 SQL 脚本。 可能需要一个脚本来更新生产数据库,或者对迁移代码进行故障排除。
- 在运行时应用迁移。 当设计时更新和正在运行脚本不是最佳选项时,调用
Migrate()
方法。
创建迁移
PowerShell-> Add-Migration InitialCreate
.Net Core CLI-> dotnet ef migrations add InitialCreate
更新数据库
PowerShell-> Update-Database
.Net Core CLI-> dotnet ef database update
自定义迁移代码
PowerShell-> Add-Migration AddProductReviews
.Net Core CLI-> dotnet ef migrations add AddProductReviews
修改迁移基架中的代码,然后更新数据库。
空迁移
有时模型未变更,直接添加迁移也很有用处。 在这种情况下,添加新迁移会创建一个带空类的代码文件。 可以自定义此迁移,执行与 EF Core 模型不直接相关的操作。 可能需要通过此方式管理的一些事项包括:
- 全文搜索
- 函数
- 存储过程
- 触发器
- 视图
删除迁移
PowerShell-> Remove-Migration
.Net Core CLI-> dotnet ef migrations remove
还原迁移
PowerShell-> Update-Database LastGoodMigration
.Net Core CLI-> dotnet ef database update LastGoodMigration
生成 SQL 脚本
PowerShell-> Script-Migration
.Net Core CLI-> dotnet ef migrations script
在运行时应用迁移
myDbContext.Database.Migrate();