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