Entity Framework 核心以编程方式应用迁移
Entity Framework Core apply migrations programmatically
我有测试和实时数据库。对于测试数据库迁移,我在程序包管理器控制台中使用 Add-Migration ...
和 Update-Database
语法。但是对于实时数据库,我想在应用程序启动时以编程方式进行。
以下代码对我没有帮助:
context.Database.Migrate();
当我尝试向 table 添加不存在的记录时出现错误 Invalid object name 'TempTenants'
。这是我的新 table.
但是我有_EFMigrationsHistory
table。还有我所有的迁移,甚至那些没有应用的迁移。但是我没有看到新的 table.
如果我从测试数据库中手动删除 table 并尝试重现错误,我将得到相同的结果。
因此,context.Database.Migrate();
仅使用所有迁移创建新数据库(如果不存在),但不更新(应用迁移)现有数据库。
我能做到吗?我该如何解决?
好像出了点问题。我从 __EFMigrationsHistory
table 中删除了未应用的迁移(记录)(我还需要将一些 table 名称、主键和外键恢复到以前的状态)并再次启动应用程序。
因此,context.Database.Migrate();
甚至对现有数据库应用迁移。
我有测试和实时数据库。对于测试数据库迁移,我在程序包管理器控制台中使用 Add-Migration ...
和 Update-Database
语法。但是对于实时数据库,我想在应用程序启动时以编程方式进行。
以下代码对我没有帮助:
context.Database.Migrate();
当我尝试向 table 添加不存在的记录时出现错误 Invalid object name 'TempTenants'
。这是我的新 table.
但是我有_EFMigrationsHistory
table。还有我所有的迁移,甚至那些没有应用的迁移。但是我没有看到新的 table.
如果我从测试数据库中手动删除 table 并尝试重现错误,我将得到相同的结果。
因此,context.Database.Migrate();
仅使用所有迁移创建新数据库(如果不存在),但不更新(应用迁移)现有数据库。
我能做到吗?我该如何解决?
好像出了点问题。我从 __EFMigrationsHistory
table 中删除了未应用的迁移(记录)(我还需要将一些 table 名称、主键和外键恢复到以前的状态)并再次启动应用程序。
因此,context.Database.Migrate();
甚至对现有数据库应用迁移。