16

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

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

Entity Framework 是否有类似的功能?

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

我为什么要这个?

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

也许我的做法是错误的,在这种情况下,我很想听听关于使用 CI 进行迁移的最佳方式的意见。

4

1 回答 1

19

是的,EF 有这个功能。

运行时,Add-Migration您会注意到迁移文件以时间戳为前缀。这就是确定顺序的原因,假设自动迁移被并且总是被禁用。

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

我的经验教会了我这些准则:

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

2) 在创建新的显式迁移之前,您团队中的每个开发人员都应确保他们拥有最新的代码。很明显,但是从陈旧的代码创建迁移会导致问题。

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

于 2013-04-25T21:51:07.043 回答