我有一个使用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; }
}
答案 0 :(得分:2)
由于您已经通过删除迁移文件弄乱了EF Core迁移的记录历史,并且快照也被污染了,因为在删除迁移文件后重新运行了迁移。
这是您应该采取的步骤:
将来,为避免这些错误,请使用git
之类的版本控制系统。并且在创建任何迁移之前提交。请注意,由于git不会控制数据库的版本,因此您需要从数据库中的_EfMigrations
表中删除对数据库的错误应用迁移。
答案 1 :(得分:1)
当数据库表中的数据与数据库中的文件之间存在差异时,会发生此错误。
您很可能创建了一次数据库,然后删除了偏头痛文件夹