基于EntityFramework代码的迁移,如何确定顺序?

时间:2013-03-06 16:44:27

标签: entity-framework ef-migrations fluent-migrator

我正在使用EF 5.0,我想开始使用Code-based migrations

我使用了fluent migrator,并且有一个迁移顺序的概念。无论数据库的迁移版本如何,都可以迁移/回滚迁移。

Entity Framework是否具有类似的功能?

我计划为每个数据库版本保留多个迁移实现(可能最初与sprint数量相关)。

为什么我要这个?

我们的持续集成将为每个环境迁移数据库。我们的Dev版本可能只是一个版本“落后”,但是当我们进入QA或PROD环境时,数据库将落后于多次迁移。

也许我会以错误的方式解决这个问题,在这种情况下,我希望听到有关使用CI进行迁移的最佳方式的意见。

1 个答案:

答案 0 :(得分:13)

是EF具有此功能。

当您运行Add-Migration时,您会注意到迁移文件的前缀是时间戳。这是决定订单的原因,假设自动迁移一直被禁用。

如果您使用显式迁移和自动迁移的混合,那么您可能会注意到迁移生成的Source文件中有一个额外的.resx属性。这是EF在运行显式迁移之前确定是否需要运行自动迁移的方法。

我的经验教会了我这些指导原则:

1)切勿使用自动迁移。

2)在创建新的显式迁移之前,团队中的每个开发人员都应确保拥有最新的代码。显而易见,但从陈旧代码创建迁移将导致问题。

3)开发人员应确保如果他们在迁移的Up()方法中编写自定义SQL,那么他们会编写适当的代码(并测试它!)以反转Down()方法中的这些更改。