Asp.net core webapi 使用新迁移asp.net core覆盖数据库
我为我的asp.net核心Web API创建了一个新的迁移,该迁移将更改应用于我的数据库,但后来我手动删除了迁移。我现在尝试添加一个带有新更改的新迁移,但由于我删除的迁移中的更改已应用于数据库,因此它给出了以下错误提示Asp.net core webapi 使用新迁移asp.net core覆盖数据库,asp.net-core-webapi,entity-framework-migrations,Asp.net Core Webapi,Entity Framework Migrations,我为我的asp.net核心Web API创建了一个新的迁移,该迁移将更改应用于我的数据库,但后来我手动删除了迁移。我现在尝试添加一个带有新更改的新迁移,但由于我删除的迁移中的更改已应用于数据库,因此它给出了以下错误提示 调用类“Program”上的方法“BuildWebHost”时出错。在没有应用程序服务提供商的情况下继续。错误:数据库中已存在名为“FK\u TaskDates\u Tasks\u TaskId”的对象。 无法创建约束或索引。请参阅以前的错误 长话短说,我试图将数据库状态恢复到应
调用类“Program”上的方法“BuildWebHost”时出错。在没有应用程序服务提供商的情况下继续。错误:数据库中已存在名为“FK\u TaskDates\u Tasks\u TaskId”的对象。
无法创建约束或索引。请参阅以前的错误
长话短说,我试图将数据库状态恢复到应用已删除迁移之前的状态
是否有办法将数据库恢复到其工作状态?迁移通过将新迁移与上次运行的迁移进行比较来工作。如果之前没有迁移,它将对数据库中的所有内容编写脚本 通常,对于以前没有迁移的现有数据库,需要添加基线迁移。对于EF6,您可以使用-IgnoreChanges标志作为此基线。EF Core没有这个功能(除非最近添加了),因此您可以通过在
Up()
方法中注释掉数据库中已有的内容并应用它来解决这个问题。重要的是捕获模型的副本以供将来比较
现在,您添加的下一个迁移将只包括存储在代码文件中的该模型的更改
要使当前系统正常工作,只需注释掉Up()
方法中已经存在的内容,保留更改的内容并应用它(updatedatabase
)