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

问题描述 投票:0回答:5

直到今天我都成功运行

Entity framework 6.0.0-alpha3
。今天我决定更新到
Entity framework 6.0.0-rc1
,并且按照 here 的指定,为了运行我的迁移,我需要删除
ef alpha1-alpha3
之前所做的所有迁移并重新制作它们。

由于我的所有迁移都是由

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

我使用

add-migration Initial -IgnoreChanges
创建了初始迁移(其中有空的
Up()
Down()
方法),然后我执行了
update-database
,我想,一切都好。嗯,事实并非如此。当我向模型添加新类时,
add-migration first
使用空的
Up()
Down()
方法创建迁移。

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

"Invalid object name 'dbo.Notifications'."

我现在该怎么办?

c# asp.net-mvc entity-framework migration
5个回答
7
投票

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

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

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

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

add-migration Initial


1
投票

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

当我记得一切正常时,我刚刚恢复到迁移,在迁移后删除了所有迁移文件,然后再次运行添加迁移。然后最后所有的组合变化都出现了。


1
投票

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


0
投票

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


0
投票

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

  1. 从 Migrations 文件夹中删除添加的迁移文件
  2. 在包管理器控制台中运行
    remove-migration
  3. 运行
    add-migration
    并添加评论
  4. 奔跑
    update-database

就是这样。祝你好运。

© www.soinside.com 2019 - 2024. All rights reserved.