Entity Framework 核心以编程方式应用迁移

Entity Framework Core apply migrations programmatically

我有测试和实时数据库。对于测试数据库迁移,我在程序包管理器控制台中使用 Add-Migration ...Update-Database 语法。但是对于实时数据库,我想在应用程序启动时以编程方式进行。

以下代码对我没有帮助:

context.Database.Migrate();

当我尝试向 table 添加不存在的记录时出现错误 Invalid object name 'TempTenants'。这是我的新 table.

但是我有_EFMigrationsHistorytable。还有我所有的迁移,甚至那些没有应用的迁移。但是我没有看到新的 table.

如果我从测试数据库中手动删除 table 并尝试重现错误,我将得到相同的结果。

因此,context.Database.Migrate(); 仅使用所有迁移创建新数据库(如果不存在),但不更新(应用迁移)现有数据库。

我能做到吗?我该如何解决?

好像出了点问题。我从 __EFMigrationsHistory table 中删除了未应用的迁移(记录)(我还需要将一些 table 名称、主键和外键恢复到以前的状态)并再次启动应用程序。

因此,context.Database.Migrate(); 甚至对现有数据库应用迁移。