首页 > 解决方案 > 如何在不实际在 EF Core 中运行迁移的情况下将记录添加到 __EFMigrationsHistory

问题描述

我有一个问题,我有一个现有的数据库,我只映射了某些实体以与 EF Core 一起使用(数据库有 100 个表,我不想要所有这些表。

我像这样搭建了起始阶段

dotnet ef dbcontext scaffold .. etc etc

我用连接字符串指定了特定的表。

然后我创建了一个初始迁移来快照开始阶段

dotnet ef migrations add Initial

我现在想添加一个基于新实体的新表。所以我创建了第二个迁移使用

dotnet ef migrations add NewTable

但是当我运行这个使用..

dotnet ef database update NewTable

它尝试在初始迁移中添加表!因为我还没有进行迁移,所以我在 __EFMigrationsHistory 中没有记录。但是我不想运行第一次迁移,因为我已经有了脚手架的表!Initial 只是创建一个快照,这是我认为你必须做的。

那么有没有办法让它认为 Initial 已经运行?通过在 __EFMigrationsHistory 中添加一些内容?然后我可以运行 NewTable 迁移而不会得到“对象已经存在”。

谢谢

标签: .net-coreentity-framework-core

解决方案


在我删除前一个迁移后,它运行我最新的 NewTable 迁移正常,否则它仍在尝试从初始迁移中添加对象,导致“对象已存在”。

我觉得这很奇怪,因为语句 'dotnet ef database update NewTable' 指定了我想要运行的迁移,并且不应该再次运行初始。无论如何,这个修复工作正常。


推荐阅读