C# “如何应用随附的迁移”;“之前”;新的迁移
我甚至不知道这个词怎么说。我已将迁移应用于db:Migration One。迁移二。移民三。我刚刚拉了一个“迁移2.5”-如果我尝试恢复到迁移2和“更新数据库”,数据库将成功更新,并表示有待定的更改。这些“挂起的更改”是Migration 2.5,即使已经应用了它-EF希望我再次添加它们 现在,通常情况下,我会绕过这样的问题-恢复到迁移1或迁移2,删除迁移2.5,应用更改,并创建一个新的“迁移4”,最后一个。这样就避免了这个问题。但是,我现在无法改变迁移的顺序。我如何解决这个问题C# “如何应用随附的迁移”;“之前”;新的迁移,c#,.net,entity-framework,C#,.net,Entity Framework,我甚至不知道这个词怎么说。我已将迁移应用于db:Migration One。迁移二。移民三。我刚刚拉了一个“迁移2.5”-如果我尝试恢复到迁移2和“更新数据库”,数据库将成功更新,并表示有待定的更改。这些“挂起的更改”是Migration 2.5,即使已经应用了它-EF希望我再次添加它们 现在,通常情况下,我会绕过这样的问题-恢复到迁移1或迁移2,删除迁移2.5,应用更改,并创建一个新的“迁移4”,最后一个。这样就避免了这个问题。但是,我现在无法改变迁移的顺序。我如何解决这个问题 编辑:我认为
编辑:我认为重要的是要注意我的数据库工作正常。如果存在数据库/代码不匹配,EF将抛出一个错误,说明这一点-这不会发生。问题是,当我确实需要添加带有合法更改的迁移时,它会尝试复制“2.5”更改以及实际的合法更改 这并不是对原始问题的真正回答-我还没有找到一种方法让EF认识到它应用了“无序”迁移。但是,有两种方法可以解决这个问题,更具体地说,就是在尝试执行“无序”迁移时获取引用的错误: 无法更新数据库以匹配当前模型,因为存在挂起的更改,并且禁用了自动迁移。将挂起的模型更改写入基于代码的迁移或启用自动迁移。将DbMigrationsConfiguration.AutomaticMiggrationsEnabled设置为true以启用自动迁移
addmigration
。然后删除迁移操作,因此应该留下空块,如下所示:
public override void Up()
{
}
public override void Down()
{
}
然后运行updatedatabase
。原因很简单-如前所述,“无序”迁移没有应用,尽管在您第一次运行updatedatabase
时实际应用了它-请注意,您应该能够验证它是通过Get Migrations
应用的。无论如何,出于某种原因,EF希望复制它,但将通过空迁移来缓解。对我来说毫无意义B现在,从您的迁移文件夹中手动删除“无序”迁移文件。
C再次运行
updatedatabase
,使数据库中除“无序”迁移之外的所有更改都处于最新状态。d、 运行
Add Migration
-这将重新创建您在开始时删除的“无序”迁移,但要放在正确的位置,或者至少是功能性位置。E运行
updatedatabase
,您就完成了
请注意,这将产生问题,除非与您的团队同步,因为我太懒了,无法深入讨论#2更好,但1更容易更快
另外,Stackoverflow嵌套列表语法对我来说太难处理了 为什么要创建一个新的迁移,由于某种原因,它位于两个现有迁移之间?迁移2.5不应该是迁移4吗。做我,做甜蜜的顺序迁移。2.我的高级开发人员决定合并他的旧分支。通过前面提到的迁移将它们推到构建中。3.我从github获取这些更改,包括所有迁移。4.他太酷了,无法解释如何让它工作。为什么订单会影响你的还是他们的?在我看来,如果他们以某种方式相互依赖,那么顺序并不重要,你真正需要做的是解决冲突。这是瞎猜吗,马特?因为我发现顺序总是很重要的,而且当迁移出现问题时,这个问题总是会发生。一旦您合并它们,每个人都会进行DbMigration(随后的
更新数据库将使他们的环境最新)。有多少人正在创建迁移?听起来你需要弄清楚谁在做什么。