EF Migration对象已存在错误

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了EF Migration对象已存在错误相关的知识,希望对你有一定的参考价值。

我正在使用Entity Framework开发一个ASP.NET MVC项目,其代码首先来自数据库。我得到了数据库中每个表的模型。我在模型中进行了一些更改,启用了迁移,当我初始化迁移时出现错误:

数据库中已经存在一个名为“TableName”的对象。“

我尝试使用update-database -force但没有帮助。初始迁移会创建已存在的表!

如何进行初始迁移应用模型上的更改而不是从头开始创建表?

在这种情况下,在数据库和模型之间同步更改的最佳做法是什么?

答案

试着跑

Add-Migration InitialCreate –IgnoreChanges 

包管理器控制台中的命令。这将创建一个空迁移,将当前模型作为快照。然后运行

Update-Database 

包管理器控制台中的命令。这将将InitialCreate迁移应用于数据库。由于实际迁移不包含任何更改,因此只需向__MigrationsHistory表添加一行,指示已应用此迁移。

this

然后更改模型并添加迁移。

另一种方法是简单地在up和down方法上注释所有代码

另一答案

最好的和工作对我来说,想法是评论初始迁移文件的UP和Down函数中的所有代码,然后触发dotnet ef database update这应该可以正常工作,确保在注释掉初始迁移之前更新迁移

另一答案

Amr Alaa解决方案有效,但数据库没有迁移到最新模型。

以下是它的工作原理(使用自动迁移):

  1. 删除迁移文件夹
  2. 执行enable-migrations
  3. 在新创建的Configuration.cs中将此两个属性设置为true public Configuration() { AutomaticMigrationsEnabled = true; AutomaticMigrationDataLossAllowed = true; }
  4. 执行Update-Database -Force

您的数据库将更新为最新方案并准备就绪。

希望这可以帮助。

另一答案

删除以前的迁移并且新迁移尝试创建已存在的新表时,会显示此错误。恢复以前的迁移,一切都会好的。

以上是关于EF Migration对象已存在错误的主要内容,如果未能解决你的问题,请参考以下文章

EF 代码第一次迁移报错“对象已断开连接或在服务器上不存在”

为啥 ef Add-Migration 出现错误

EF Core 迁移错误:PositionalParameterNotFound,Add-Migration

EF Core 添加迁移构建失败

c# ef 修改提示,ObjectStateManager 中已存在具有同一键的对象。

EF6 Migration 自动迁移未执行