我成功运行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'."
。
我现在该怎么办?
答案 0 :(得分:7)
EF使用数据库模型的快照(随迁移一起保存)来确定当前版本的数据库模型与上次迁移之间的更改。
add-migration Initial -IgnoreChanges
命令使用数据库模型的快照创建迁移,但它忽略了以前数据库快照(即空数据库)的任何更改,因为您要告知这样做。
add-migration First
命令查看先前的迁移(即Initial),并将当前数据库模型快照与Initial
迁移的快照进行比较。显然这些快照是相同的,因此Up()
和Down()
方法都是空的。
我认为您的问题的解决方案是在初始迁移中生成所有更改
add-migration Initial
答案 1 :(得分:1)
我遇到了一个问题,即实体没有认识到我的更改,即使我在程序集中添加了一个全新的实体类,它仍然看不到它。
当我记得一切正常时,我恢复了迁移,在迁移后删除了所有迁移文件,并再次运行Add-Migration。然后最终所有组合的变化出现了。
答案 2 :(得分:1)
有同样的问题。最终从数据库中删除了所有表,包括EFMigrationHistory,然后从我的解决方案中删除了migrations文件夹。
最后,在其他注释中提到了使用重新构建的批处理构建步骤。在我进行批处理构建之前,没有任何工作。我正在运行截至2018年11月18日的最新版VS 2017
答案 3 :(得分:0)
我也有空的上升/下降,原因是EF并不喜欢我的模型在他们的属性之上有[JsonProperty],因为我也使用了相同的模型用于json数据源。