Entity framework EntityFramework基于代码的迁移,如何确定顺序?
我正在使用EF5.0,我想开始使用 我使用了迁移顺序的概念。无论数据库的迁移版本如何,都可以迁移/回滚迁移 实体框架是否具有类似的功能 我计划为每个数据库版本保留多个迁移实现(最初可能与sprint编号有关) 我为什么要这个 我们的持续集成将为每个环境迁移数据库。我们的开发版本很可能只有一个版本“落后”,但当我们进入QA或PROD环境时,数据库将因多次迁移而落后Entity framework EntityFramework基于代码的迁移,如何确定顺序?,entity-framework,entity-framework-migrations,fluent-migrator,Entity Framework,Entity Framework Migrations,Fluent Migrator,我正在使用EF5.0,我想开始使用 我使用了迁移顺序的概念。无论数据库的迁移版本如何,都可以迁移/回滚迁移 实体框架是否具有类似的功能 我计划为每个数据库版本保留多个迁移实现(最初可能与sprint编号有关) 我为什么要这个 我们的持续集成将为每个环境迁移数据库。我们的开发版本很可能只有一个版本“落后”,但当我们进入QA或PROD环境时,数据库将因多次迁移而落后 也许我的想法是错误的,在这种情况下,我很想听听大家对使用CI进行迁移的最佳方法的看法。是的,EF有这个功能 运行addmigratio
也许我的想法是错误的,在这种情况下,我很想听听大家对使用CI进行迁移的最佳方法的看法。是的,EF有这个功能 运行
addmigration
时,您会注意到迁移文件的前缀是时间戳。这就是决定顺序的原因,假设自动迁移一直处于禁用状态
如果您混合使用显式迁移和自动迁移,那么您可能会注意到迁移生成的.resx
文件中还有一个Source
属性。这是EF在运行显式迁移之前确定是否需要运行自动迁移的方式
我的经验教会了我这些准则:
1) 永远不要使用自动迁移
2) 在创建新的显式迁移之前,团队中的每个开发人员都应该确保他们拥有最新的代码。有点明显,但是从过时的代码创建迁移将导致问题
3) 开发人员应该确保,如果他们在迁移的
Up()
方法中编写自定义SQL,那么他们会编写适当的代码(并对其进行测试!),以逆转Down()
方法中的更改。好的方面,干杯。我想说2)是不明显的,直到你意识到EF隐藏了当前模型的二进制表示,这是不可能合并/更新的。(另请参见)关于功能分支的内容有很多:-/我认为您仍然可以在功能进入之前使用功能分支,重新设置基础以获取其代码,回滚迁移,并使用其新快照重新创建迁移(并在其他人提交某些内容之前快速进入!)