我无法使用Entity Framework Core更新数据库

时间:2019-10-16 12:37:40

标签: sql-server asp.net-core entity-framework-core

我有一个使用SQL Server和EF Core的ASP.NET Core应用程序。它包含两个表。我成功创建了Entity Framework Core迁移并使用名为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; }
}

2 个答案:

答案 0 :(得分:2)

由于您已经通过删除迁移文件弄乱了EF Core迁移的记录历史,并且快照也被污染了,因为在删除迁移文件后重新运行了迁移。

这是您应该采取的步骤:

  1. 删除所有剩余的迁移
  2. 删除数据库
  3. 创建新的初始迁移
  4. 创建一个新数据库。

将来,为避免这些错误,请使用git之类的版本控制系统。并且在创建任何迁移之前提交。请注意,由于git不会控制数据库的版本,因此您需要从数据库中的_EfMigrations表中删除对数据库的错误应用迁移。

答案 1 :(得分:1)

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

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