我有测试和实时数据库。对于测试数据库迁移,我在包管理器控制台中使用Add-Migration ...
和Update-Database
语法。但对于实时数据库,我想在应用程序启动时以编程方式执行此操作。
以下代码对我没有帮助:
context.Database.Migrate();
当我尝试将记录添加到不存在的表时,我有错误Invalid object name 'TempTenants'
。这是我的新表。
但我有_EFMigrationsHistory
表。而且我的所有迁移都是那些没有应用的迁移。但我没有看到新表。
如果我手动从测试数据库中删除表并尝试重现错误,我将得到相同的结果。
因此,context.Database.Migrate();
仅创建包含所有迁移的新数据库(如果它不存在),但不更新(应用迁移)现有数据库。
我能这样做吗?我该如何解决?
答案 0 :(得分:1)
似乎出了问题。我从__EFMigrationsHistory
表中删除了未应用的迁移(记录)(我还需要将一些表名,主键和外键还原到以前的状态)并再次启动应用程序。
因此,context.Database.Migrate();
即使对现有数据库也适用迁移。