[文章内容来源于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();

01-26 12:13