我们是否需要在使用MigrateDatabaseToLatestVersion时添加显式数据库迁移?

时间:2014-07-01 06:55:10

标签: entity-framework ef-migrations

最近我遇到了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中删除迁移历史记录来解决该问题。

我的问题是 - 我们是否应该在实体(代码级别)发生变化时添加迁移脚本,尽管我们已启用自动迁移?

围绕这个最佳做法是什么?

1 个答案:

答案 0 :(得分:0)

如果您正在使用自动迁移,则不应自行编写任何显式迁移代码。在创建上下文时,实体框架将自动更新数据库以匹配实体的当前状态。