最近我遇到了EF codefirst DB迁移的问题。我们已将MigrateDatabaseToLatestVersion用于DB初始化程序。
Database.SetInitializer(new MigrateDatabaseToLatestVersion<TestDataContext, MyConfiguration>());
internal sealed class MyConfiguration : DbMigrationsConfiguration<TestDataContext>
{
public Configuration()
{
AutomaticMigrationsEnabled = true;
AutomaticMigrationDataLossAllowed = true;
...
问题是 - 我们使用以下命令意外地运行旧的数据库迁移文件:
Update-database -TargetMigration some_old_test_migration_cs_file
这导致我们放弃了最新的实体架构更改,我们无法将最新的更改推送到数据库。在浪费了大量时间进行问题排查后,我们通过从表__MigrationHistory
中删除迁移历史记录来解决该问题。
我的问题是 - 我们是否应该在实体(代码级别)发生变化时添加迁移脚本,尽管我们已启用自动迁移?
围绕这个最佳做法是什么?
答案 0 :(得分:0)
如果您正在使用自动迁移,则不应自行编写任何显式迁移代码。在创建上下文时,实体框架将自动更新数据库以匹配实体的当前状态。