实体框架迁移未检测到任何更改

本文关键字:任何更 检测 框架 迁移 实体 | 更新日期: 2023-09-27 18:31:26

直到今天,我Entity framework 6.0.0-alpha3一直成功运行。今天我决定更新到 Entity framework 6.0.0-rc1 ,并且如此处指定,为了运行我的迁移,我需要删除 ef alpha1-alpha3 之前进行的所有迁移并重新制作它们。

由于我所有的迁移都是由alpha3进行的,我决定删除所有迁移(包括_MigrationHistory表),然后重新启用它。

我用add-migration Initial -IgnoreChanges(它有空Up()Down()方法)创建了初始迁移,然后我执行了update-database,我想,一切都很好。嗯,不是。当我向模型添加新类时,add-migration first使用空Up()Down()方法创建迁移。

此外,以前,当我想访问尚未注册到迁移的对象时,我收到一条错误消息,指出我需要更新迁移。现在,当我尝试访问新对象时,它只是说"Invalid object name 'dbo.Notifications'.".

我现在该怎么办?

实体框架迁移未检测到任何更改

EF

使用数据库模型的快照(与迁移一起保存)来确定数据库模型的当前版本与上次迁移之间的更改。

add-migration Initial -IgnoreChanges命令使用数据库模型的快照创建迁移,但它会忽略来自先前数据库快照(即空数据库)的任何更改,因为您告诉这样做。

add-migration First命令查看以前的迁移(即初始),并将当前数据库模型快照与Initial迁移中的快照进行比较。显然,这些快照是相同的,因此Up()Down()方法都是空的。

我认为您的问题的解决方案是在初始迁移中生成所有更改

add-migration Initial

我遇到了实体无法识别我的更改的问题,即使我向程序集中添加了一个全新的实体类,它仍然看不到它。

当我记得一切正常时,我只是恢复到迁移,在该迁移之后删除了所有迁移文件,然后再次运行 Add-Migration。最后,所有组合的变化都出现了。

有同样的问题。 最终从数据库中删除了所有表,包括 EFMigrationHistory,然后从我的解决方案中删除了迁移文件夹。
最后,在其他评论中提到了批量构建步骤。 在我进行批量构建之前没有任何效果。 我正在运行截至 11 年 18 月 2017 日的最新版本 VS 18

我也有空的向上/向下,原因是 EF 不喜欢我的模型在其属性之上具有 [JsonProperty],因为我也对 json 数据源使用相同的模型。

有以下步骤可以帮助我实现我的目标。

  1. 从"迁移"文件夹中删除添加的迁移文件
  2. 在程序包管理器控制台中运行remove-migration
  3. 运行带有注释的add-migration
  4. 运行update-database

就是这样。祝你好运。