Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/vim/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net core webapi 使用新迁移asp.net core覆盖数据库_Asp.net Core Webapi_Entity Framework Migrations - Fatal编程技术网

Asp.net core webapi 使用新迁移asp.net core覆盖数据库

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”的对象。 无法创建约束或索引。请参阅以前的错误 长话短说,我试图将数据库状态恢复到应

我为我的asp.net核心Web API创建了一个新的迁移,该迁移将更改应用于我的数据库,但后来我手动删除了迁移。我现在尝试添加一个带有新更改的新迁移,但由于我删除的迁移中的更改已应用于数据库,因此它给出了以下错误提示

调用类“Program”上的方法“BuildWebHost”时出错。在没有应用程序服务提供商的情况下继续。错误:数据库中已存在名为“FK\u TaskDates\u Tasks\u TaskId”的对象。
无法创建约束或索引。请参阅以前的错误

长话短说,我试图将数据库状态恢复到应用已删除迁移之前的状态


是否有办法将数据库恢复到其工作状态?

迁移通过将新迁移与上次运行的迁移进行比较来工作。如果之前没有迁移,它将对数据库中的所有内容编写脚本

通常,对于以前没有迁移的现有数据库,需要添加基线迁移。对于EF6,您可以使用-IgnoreChanges标志作为此基线。EF Core没有这个功能(除非最近添加了),因此您可以通过在
Up()
方法中注释掉数据库中已有的内容并应用它来解决这个问题。重要的是捕获模型的副本以供将来比较

现在,您添加的下一个迁移将只包括存储在代码文件中的该模型的更改

要使当前系统正常工作,只需注释掉
Up()
方法中已经存在的内容,保留更改的内容并应用它(
updatedatabase