迁移对象已经存在错误
本文关键字:存在 错误 对象 迁移 | 更新日期: 2023-09-27 17:53:41
我正在做一个ASP。NET MVC项目与实体框架与代码首先从数据库。我得到了数据库中每个表的模型。我在模型中做了一些更改,启用了迁移,当我初始化迁移时,我得到了一个错误:
数据库中已经存在一个名为"TableName"的对象。"
我尝试了update-database -force
,但没有帮助。初始迁移创建已经存在的表!
如何使初始迁移在模型上应用更改,而不是从一开始就创建表?
在这种情况下,在数据库和模型之间同步更改的最佳实践是什么?尝试运行
Add-Migration InitialCreate –IgnoreChanges
命令在包管理器控制台中。这将创建一个空的迁移,并将当前模型作为快照。然后运行
Update-Database
命令在包管理器控制台中。这将把InitialCreate迁移应用到数据库。由于实际的迁移不包含任何更改,它将简单地向__migrationhistory表中添加一行,表明该迁移已经被应用。
看到这个
然后更改您的模型并添加迁移。
另一种方法是简单地在
对我来说最好的想法是在初始迁移文件的UP和Down函数中注释所有代码,然后触发dotnet ef database update
应该可以正常工作,确保在注释初始迁移
如果这些答案都不适合您,您可以检查您的代码中是否使用了
方法context.Database.EnsureCreated()
请注意,该方法不应用任何迁移(源)(你可以检查这做一个sql查询数据库,像"select * from __EfMigrationHistory",并确保没有迁移在该数据库。
EF提供了一个很好的方法来帮助这个,那就是
context.Database.Migrate()
,它不仅将确保您的拥有数据库,而且还将使用迁移并将数据库迁移到最新版本。
希望有所帮助
当您删除以前的迁移并且您的新迁移尝试创建已经存在的新表时,将出现此错误。
Amr ala解决方案可以工作,但是数据库没有迁移到最新的模型。
它是如何工作的(使用自动迁移):
- 删除迁移文件夹
- 执行enable-migrations
在新创建的Configuration.cs
中将这两个属性设置为truepublic Configuration() { AutomaticMigrationsEnabled = true; AutomaticMigrationDataLossAllowed = true; }
Execute Update-Database -Force
您的数据库将更新到最新的方案,并准备好。