c# - EntityFramework EF 不让我重新搭建脚手架

标签 c# entity-framework entity-framework-6 entity-framework-migrations

我已经多次成功地完成了这种程序,但是第一次,它似乎不起作用。我想合并我的应用程序的两个分支,它们具有不同的代码优先迁移状态。我知道在两个版本的开发过程中,模式在两个版本中都发生了变化,导致了不同的快照,所以我需要重新搭建我的合并迁移以匹配数据库快照,基本上是 following this guide, Option 2 .在给定的项目中,我有几十个迁移,其中多个已按照描述成功合并和重新构建。

所以我正在做的是将数据库状态带到迁移之前的数据库版本(例如 Update-Database -targetMigration 201511261243087_BeforeMigration,指南的第 4 步)并重新搭建合并的迁移正确的顺序,以便他们可以重新构建元数据。

当我使用命令 Add-Migration 201512170931290_FirstMergedMigration 时,我收到以下错误消息:

Unable to generate an explicit migration because the following explicit migrations are pending: [201512170931290_FirstMergedMigration, 201512140935307_SecondMergedMigration]. Apply the pending explicit migrations before attempting to generate a new explicit migration.

什么?我没想到会这样。我期待命令重新构建现有迁移的元数据并更新架构快照。但假设我想添加一个新的迁移。 -force 标志也无济于事。

当我按照推荐的步骤更新数据库时,EF 将创建一个新的迁移,名为:201512210931290_201512170931290_FirstMergedMigration。这真是太疯狂了。

我希望有一个单独的命令来重新构建元数据,这样它可能会显示更清晰的错误消息。

有人以前见过这个吗?

更新:

查看我的 own answer .

最佳答案

好的,看来我在这里发现了问题...这似乎是我尝试重新搭建的第一次迁移,不包含任何架构更改,因为它只是添加索引等。似乎 EF 会尝试如果未检测到给定迁移中的更改,则添加新迁移。我能够做的是跳过那个迁移,继续下一个,结果是预期的:

Only the Designer Code for migration '201512140935307_SecondMergedMigration' was re-scaffolded. To re-scaffold the entire migration, use the -Force parameter.

我检查了数据库,__MigrationHistory 看起来不错,表也不错。如果 EF 生成了更好的错误消息,而不是尝试在我显然试图重新搭建的地方添加新迁移,这将意味着更少的麻烦。

关于c# - EntityFramework EF 不让我重新搭建脚手架,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34396084/

相关文章:

c# - 尝试获取在 Linq2Entities 查询中连接的字符串

c# - Entity Framework 错误 : The ForeignKeyAttribute on property is not valid

asp.net - 角色/声明访问控制系统的替代方案

c# - 有没有办法在身份验证后在 ASP.NET Core 中间件中添加声明?

c# - 如何在 C# 中检查给定点位于两条非线性线之间?

entity-framework - Role.OnStart() 生成的线程中的 EF 使用情况

c# - Entity Framework - 使用 where 条件进行异步选择

c# - 在 C# 中将 foreach 转换为 lambda 表达式

c# - 使用 C# 从 Windows 凭据存储中检索凭据

c# - 检测游戏是否在安卓模拟器中运行