Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/25.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.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
Sql server 我能';t使用实体框架核心更新数据库_Sql Server_Asp.net Core_Entity Framework Core - Fatal编程技术网

Sql server 我能';t使用实体框架核心更新数据库

Sql server 我能';t使用实体框架核心更新数据库,sql-server,asp.net-core,entity-framework-core,Sql Server,Asp.net Core,Entity Framework Core,我有一个ASP.NET核心应用程序,它使用SQL Server和EF核心。它包含两个表。我成功地创建了实体框架核心迁移,并用它更新了第一个名为Pies的表的数据库 然后,在我添加了另一个名为Feedbacks的表之后,我创建了第二个迁移 但是,当我尝试更新数据库时,它失败了,我得到以下错误: 错误编号:2714,状态:6,类别:16 数据库中已存在名为“Pies”的对象 以下是DbContext类: public class AppDbContext : DbContext { publ

我有一个ASP.NET核心应用程序,它使用SQL Server和EF核心。它包含两个表。我成功地创建了实体框架核心迁移,并用它更新了第一个名为
Pies
的表的数据库

然后,在我添加了另一个名为
Feedbacks
的表之后,我创建了第二个迁移

但是,当我尝试更新数据库时,它失败了,我得到以下错误:

错误编号:2714,状态:6,类别:16
数据库中已存在名为“Pies”的对象

以下是
DbContext
类:

public class AppDbContext : DbContext
{
    public AppDbContext(DbContextOptions<AppDbContext> options) : base(options)
    {
    }

    public DbSet<Pie> Pies { get; set; }
    public DbSet<Feedback> Feedbacks { get; set; }
}
公共类AppDbContext:DbContext
{
公共AppDbContext(DbContextOptions选项):基本(选项)
{
}
公共DbSet Pies{get;set;}
公共数据库集反馈{get;set;}
}

因为您删除了一个迁移文件,弄乱了EF Core迁移的记录历史,并且您的快照也被污染了,因为您在删除一个迁移文件后重新运行了迁移

以下是您应该采取的步骤:

  • 删除所有剩余的迁移
  • 删除数据库
  • 创建新的初始迁移
  • 创建一个新的数据库

  • 将来为了避免这些错误,请使用类似于
    git
    的版本控制系统。在创建任何迁移之前提交。注意:您需要从数据库的
    \u EfMigrations
    表中删除错误应用到数据库的迁移,因为git不控制数据库的版本。

    当数据库表中的数据与数据库中的文件之间存在差异时,会发生此错误


    您很可能创建了一次数据库,然后删除了偏头痛文件夹

    您在描述的步骤之间做了什么?就像删除数据库中以前的迁移文件或表一样?我已经删除了最后一次迁移,并再次添加了它,但有同样的问题谢谢@Anton我已经使用git了,因此,我将回到前一个问题version@SaTech如果返回到以前的版本,请确保遵循我提到的最后一个步骤,并删除以前应用到数据库的迁移。除了那个馅饼。id将等于迁移的名称。谢谢@Reza yes,当我在SQL Server对象资源管理器中查看反馈表时,它不会出现在数据库中