我有一个使用 SQL Server 和 EF Core 的 ASP.NET Core 应用程序。它包含两个表。我成功创建了 Entity Framework Core 迁移,并用它更新了第一个名为 Pies
的表的数据库。
然后,在添加另一个名为 Feedbacks
的表后,我创建了第二个迁移。
但是,当我尝试更新数据库时,它失败并收到此错误:
Error Number:2714,State:6,Class:16
There is already an object named 'Pies' in the database.
这是DbContext
类:
public class AppDbContext : DbContext
{
public AppDbContext(DbContextOptions<AppDbContext> options) : base(options)
{
}
public DbSet<Pie> Pies { get; set; }
public DbSet<Feedback> Feedbacks { get; set; }
}
最佳答案
由于您通过删除迁移文件弄乱了 EF Core 迁移的记录历史记录,并且您的快照也受到污染,因为您在删除迁移后重新运行了迁移。
以下是您应该采取的步骤:
- 删除所有剩余的迁移
- 删除数据库
- 创建新的初始迁移
- 创建一个新数据库。
将来为了避免这些错误,请使用 git
等版本控制系统。在创建任何迁移之前提交。请注意,您需要从数据库的 _EfMigrations
表中删除错误应用到数据库的迁移,因为 git 不对您的数据库进行版本控制。
关于sql-server - 我无法使用 Entity Framework Core 更新数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58413505/