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

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

我有一个使用 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 迁移的记录历史记录,并且您的快照也受到污染,因为您在删除迁移后重新运行了迁移。

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

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

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

关于sql-server - 我无法使用 Entity Framework Core 更新数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58413505/

相关文章:

javascript - 从 asp.NET Core Controller 返回 JavaScript

c# - EnsureCreated 方法无法在数据库中创建新表

c# - SQL Server 如何处理并发请求?

java - 带有提交按钮的 html 表,用于使用 SQL 数据库中的数据更新每个单独的表行

asp.net-mvc - 如何将 IStringLocalizer 注入(inject) IApplicationModelConvention?

c# - 我们怎样才能返回一个与方法返回类型不同的对象呢?

c# - 在 Orderby 中使用 Max()

c# - 如何检测 EF Core 何时必须在内存中执行某些 IQueryable 操作

asp.net - 如何防止低效的 SQL 查询减慢数据库服务器的速度

c# - 如何在未安装 SQL Server 的计算机上使用其 Sql Server 数据库运行桌面应用程序