7

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'.".

现在我该怎么做?

4

4 回答 4

7

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

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

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

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

add-migration Initial

于 2013-10-10T20:06:08.083 回答
1

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

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

于 2015-06-20T19:29:44.690 回答
1

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

于 2018-11-18T21:59:02.937 回答
0

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

于 2016-04-18T20:56:52.843 回答