实体框架尝试添加已在数据库中的表的迁移

时间:2018-05-15 16:32:43

标签: c# asp.net-mvc entity-framework-6 ef-code-first

尝试在本地运行我的ASP.NET MVC应用程序时,一切正常。但是一旦我部署了Azure,它就会一直给我错误:

  

无法更新数据库以匹配当前模型,因为存在待定更改并且已禁用自动迁移。

因此,我使用Visual Studio中的程序包管理器控制台连接到远程数据库,并运行Update-Database命令。这给了我同样的错误。当我查看SQL Server Management Studio中的数据库时,看起来应用了所有迁移。

所以在此之后我尝试运行Add-Migration以查看是否有任何我没有注意到的更改。它创建的迁移与前两次迁移完全相同(那里没有任何迁移中没有任何内容)。

到目前为止,该网站运行了大约两周,包括一些迁移。我对如何解决这个问题感到茫然,所以对任何帮助表示赞赏。

我确定我正在连接到正确的数据库,因为当我将其更新为目标迁移时,我发现它会发生变化。我也瞄准了正确的项目。

2 个答案:

答案 0 :(得分:2)

如果您确定Add-Migration正在为已应用的更改创建脚本,则需要更新数据库的迁移状态。您可以通过添加空迁移来完成此操作。这将捕获您当前模型的状态。

Add-Migration MergeChanges –IgnoreChanges 

运行此命令后,您将拥有一个空的迁移脚本。现在,您可以更新数据库以匹配模型状态。由于实际迁移不包含任何更改,因此只需向__MigrationsHistory表添加一行,指示已应用此迁移。

注意仅当您没有任何待处理的更改但仍然看到更新数据库的错误消息时运行此命令。

答案 1 :(得分:0)

可能你有2个以上的DbSet<>同名"名称"在您通过Package Manager控制台更新数据库时生成的Model / IdentityModels.cs。尽量保持你想要的那个。 希望它有所帮助