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

msw*_*son 12 entity-framework fluent-migrator ef-migrations

我正在使用EF 5.0,我想开始使用基于代码的迁移

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

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

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

我为什么要这个?

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

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

Dav*_*ves 14

是EF具有此功能.

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

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

我的经验教会了我这些指导方针:

1)永远不要使用自动迁移.

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

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

  • 好点,加油。我会说 2) 并不明显,直到您意识到 EF 有当前模型的二进制表示,这是不可能合并/更新的。(另请参见 http://stackoverflow.com/a/10694348/10245)功能分支就这么多:-/ (2认同)