sql-server - 我无法使用 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; }
}
解决方案
由于您通过删除迁移文件弄乱了 EF Core 迁移的记录历史,并且您的快照也受到污染,因为您在删除一个文件后重新运行了迁移。
以下是您应该采取的步骤:
- 删除所有剩余的迁移
- 删除数据库
- 创建新的初始迁移
- 创建一个新的数据库。
将来为了避免这些错误,请使用版本控制系统,如git
. 在创建任何迁移提交之前。请注意,您需要从数据库中的_EfMigrations
表中删除错误应用到数据库的迁移,因为 git 不对您的数据库进行版本控制。
推荐阅读
- sql - 如何在 mssql 中查找特定值?
- javascript - Javascript中的数独求解器使用回溯和递归
- javascript - Limit Checkboxes from getting checked when two separate drop-down options are selected?
- javascript - 在 array-JS 中循环和发布值
- angular - Host 解析修饰符究竟是如何影响注入过程的?
- javascript - 反应组件的打字稿减速器初始状态和选项参数
- c# - EF Core 自动删除添加操作的记录
- python - 如何将 JSON 的第一部分转换为数组 python?
- python - QModelIndex.internalPointer() 返回随机对象并崩溃
- xhtml - 如何限制 XHTML 中的输出文本?