我用Entity Framework Code First创建了一个MVC项目 . 该项目有一个体面的数据库,并在 生产环境 中 . 现在,我正在添加一组新的功能,这些功能将使数据库的大小(表的数量)翻倍 . 在我开发它时,我希望对POCO对象和Fluent模型构建逻辑进行大量调整 . 但是,我不想进行100次“迁移”,因为我做了一点改动 .
如果我在做Database First,我会改变数据库并迭代地重新创建模型 . 完成后,我可以将最终模式与先前模式进行比较,并创建更改脚本 .
我倾向于创建一个新的临时DbContext并为那里的新表开发我的Code First模型,在迭代时从头开始重新创建一个新的数据库 . 然后当我拥有我对它感到满意的模型时,将其移动到主DbContext中并创建一个大的迁移 . 但这似乎很痛苦 . 它还存在新对象与需要放置的现有对象之间存在某种关系的问题 .
所以,我的具体问题是如何对Code First数据库进行许多小的更改:
-
无需重新创建现有数据库
-
并且没有为我想要测试的每个更改创建(永久)迁移
1 回答
您说您使用Code First创建了项目,因此我假设您不需要reverse engineer数据库 .
要避免重新创建现有数据库,请使用
MigrateDatabaseToLatestVersion
database initializer为避免为每个更改创建永久迁移,您可以回滚每个次要更改,然后强制迁移重新运行 .
要回滚:
Update-Database -TargetMigration 0
强制迁移重新运行:
Add-Migration "OneMigrationToRuleThemAll" -Force
另一方面....
(理查德卡尔森)
这些tips for Entity Framework migrations值得一读