我正在使用EF 5.0,我想开始使用Code-based migrations
我使用了fluent migrator,并且有一个迁移顺序的概念。无论数据库的迁移版本如何,都可以迁移/回滚迁移。
Entity Framework是否具有类似的功能?
我计划为每个数据库版本保留多个迁移实现(可能最初与sprint数量相关)。
为什么我要这个?
我们的持续集成将为每个环境迁移数据库。我们的Dev版本可能只是一个版本“落后”,但是当我们进入QA或PROD环境时,数据库将落后于多次迁移。
也许我会以错误的方式解决这个问题,在这种情况下,我希望听到有关使用CI进行迁移的最佳方式的意见。
答案 0 :(得分:13)
是EF具有此功能。
当您运行Add-Migration
时,您会注意到迁移文件的前缀是时间戳。这是决定订单的原因,假设自动迁移一直被禁用。
如果您使用显式迁移和自动迁移的混合,那么您可能会注意到迁移生成的Source
文件中有一个额外的.resx
属性。这是EF在运行显式迁移之前确定是否需要运行自动迁移的方法。
我的经验教会了我这些指导原则:
1)切勿使用自动迁移。
2)在创建新的显式迁移之前,团队中的每个开发人员都应确保拥有最新的代码。显而易见,但从陈旧代码创建迁移将导致问题。
3)开发人员应确保如果他们在迁移的Up()
方法中编写自定义SQL,那么他们会编写适当的代码(并测试它!)以反转Down()
方法中的这些更改。