首页 文章

对现有的Entity Framework Code First数据库进行重大更改的最佳方法是什么?

提问于
浏览
1

我用Entity Framework Code First创建了一个MVC项目 . 该项目有一个体面的数据库,并在 生产环境 中 . 现在,我正在添加一组新的功能,这些功能将使数据库的大小(表的数量)翻倍 . 在我开发它时,我希望对POCO对象和Fluent模型构建逻辑进行大量调整 . 但是,我不想进行100次“迁移”,因为我做了一点改动 .

如果我在做Database First,我会改变数据库并迭代地重新创建模型 . 完成后,我可以将最终模式与先前模式进行比较,并创建更改脚本 .

我倾向于创建一个新的临时DbContext并为那里的新表开发我的Code First模型,在迭代时从头开始重新创建一个新的数据库 . 然后当我拥有我对它感到满意的模型时,将其移动到主DbContext中并创建一个大的迁移 . 但这似乎很痛苦 . 它还存在新对象与需要放置的现有对象之间存在某种关系的问题 .

所以,我的具体问题是如何对Code First数据库进行许多小的更改:

  • 无需重新创建现有数据库

  • 并且没有为我想要测试的每个更改创建(永久)迁移

1 回答

  • 1

    您说您使用Code First创建了项目,因此我假设您不需要reverse engineer数据库 .

    要避免重新创建现有数据库,请使用 MigrateDatabaseToLatestVersion database initializer

    为避免为每个更改创建永久迁移,您可以回滚每个次要更改,然后强制迁移重新运行 .

    要回滚: Update-Database -TargetMigration 0

    强制迁移重新运行: Add-Migration "OneMigrationToRuleThemAll" -Force

    另一方面....

    学会停止出汗的小东西涉及决定要做什么事情以及要忽略的事情

    (理查德卡尔森)

    这些tips for Entity Framework migrations值得一读

相关问题