首页 > 解决方案 > 我无法使用 Entity Framework Core 更新数据库

问题描述

我有一个使用 SQL Server 和 EF Core 的 ASP.NET Core 应用程序。它包含两个表。我成功创建了一个 Entity Framework Core 迁移,并使用它为第一个名为Pies.

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

但是,当我尝试更新数据库时,它会失败并且我收到此错误:

错误号:2714,状态:6,类:16
数据库中已经有一个名为“馅饼”的对象。

这是DbContext课程:

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

    public DbSet<Pie> Pies { get; set; }
    public DbSet<Feedback> Feedbacks { get; set; }
}

标签: sql-serverasp.net-coreentity-framework-core

解决方案


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

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

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

将来为了避免这些错误,请使用版本控制系统,如git. 在创建任何迁移提交之前。请注意,您需要从数据库中的_EfMigrations表中删除错误应用到数据库的迁移,因为 git 不对您的数据库进行版本控制。


推荐阅读