Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Entity framework EntityFramework基于代码的迁移,如何确定顺序?_Entity Framework_Entity Framework Migrations_Fluent Migrator - Fatal编程技术网

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

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

我正在使用EF5.0,我想开始使用

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

实体框架是否具有类似的功能

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

我为什么要这个

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


也许我的想法是错误的,在这种情况下,我很想听听大家对使用CI进行迁移的最佳方法的看法。

是的,EF有这个功能

运行
addmigration
时,您会注意到迁移文件的前缀是时间戳。这就是决定顺序的原因,假设自动迁移一直处于禁用状态

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

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

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

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


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

好的方面,干杯。我想说2)是不明显的,直到你意识到EF隐藏了当前模型的二进制表示,这是不可能合并/更新的。(另请参见)关于功能分支的内容有很多:-/我认为您仍然可以在功能进入之前使用功能分支,重新设置基础以获取其代码,回滚迁移,并使用其新快照重新创建迁移(并在其他人提交某些内容之前快速进入!)