.net 将多个EF代码首次迁移从分支合并到主干时出错
我在VS 2010中使用EF 6.0.1,遇到一个问题,即在主干中的迁移应用于生产数据库之后,我正在将多个从分支到主干的迁移合并到主干中,并且我无法在没有错误的情况下重新构建以前的迁移。在我的情况下,大约有50个迁移正在被合并——下面的例子只有两个来说明这个问题 请注意,我可以在trunk中重新创建迁移,但我不希望这样,因为我们有大约50个迁移,其中许多迁移都经过了大量编辑,而且还有大量原始SQL执行数据操作。这将是一项需要重新创建的巨大工作,更不用说它只会导致一次大规模迁移 下面是一个简化的场景:.net 将多个EF代码首次迁移从分支合并到主干时出错,.net,entity-framework,ef-code-first,entity-framework-migrations,.net,Entity Framework,Ef Code First,Entity Framework Migrations,我在VS 2010中使用EF 6.0.1,遇到一个问题,即在主干中的迁移应用于生产数据库之后,我正在将多个从分支到主干的迁移合并到主干中,并且我无法在没有错误的情况下重新构建以前的迁移。在我的情况下,大约有50个迁移正在被合并——下面的例子只有两个来说明这个问题 请注意,我可以在trunk中重新创建迁移,但我不希望这样,因为我们有大约50个迁移,其中许多迁移都经过了大量编辑,而且还有大量原始SQL执行数据操作。这将是一项需要重新创建的巨大工作,更不用说它只会导致一次大规模迁移 下面是一个简化的场
public class Widget
{
public int Id { get; set; }
}
public class Widget
{
public int Id { get; set; }
public string Name { get; set; }
}
public partial class Migration1 : DbMigration
{
public override void Up()
{
AddColumn("dbo.Widgets", "Name", c => c.String());
}
//...
}
public class Widget
{
public int Id { get; set; }
public string Name { get; set; }
public string Category { get; set; }
}
public partial class Migration2 : DbMigration
{
public override void Up()
{
AddColumn("dbo.Widgets", "Category", c => c.String());
}
//...
}
public class Widget
{
public int Id { get; set; }
public string Name { get; set; }
public string Category { get; set; }
public string Status { get; set; }
}
PM> Add-Migration Migration1
Unable to generate an explicit migration because the following explicit migrations are pending: [201311032026211_Migration1, 201311032027440_Migration2]. Apply the pending explicit migrations before attempting to generate a new explicit migration.
PM> Add-Migration Migration2
Re-scaffolding migration 'Migration2'.
Only the Designer Code for migration 'Migration2' was re-scaffolded. To re-scaffold the entire migration, use the -Force parameter.
Migrations允许我现在将Migration2应用于数据库,但这会导致以错误的顺序应用迁移(即Migration1之前的Migration2)有什么解决方法吗?您的迁移历史记录表似乎不同步。查看此链接和Julie Lermans链接,更好地了解如何重新开始,因为更改已从分支合并到主干
我也建议,因为有一个模式,两个项目考虑一个从源到分支的合并项目,它包含了两组变化,合并,重新出现在这种情况下会导致问题,如您当前的问题所示。
谢谢@ Mike Beeler。是的,我的迁移表不同步-但如上所述,我无法在没有错误的情况下使其恢复同步。我当然不想在每次将迁移从分支合并到主干时都重新开始代码迁移!这是一个系统和一个代码库-分支用于分离长时间运行的项目上的构建-然后合并回主干。我确实有一个“公共项目”——数据访问层——但它在导致上述问题的分支或主干中进行了修改。必须有一个妥善的办法来解决这一混乱局面。PM> Add-Migration Migration2
Re-scaffolding migration 'Migration2'.
Only the Designer Code for migration 'Migration2' was re-scaffolded. To re-scaffold the entire migration, use the -Force parameter.