首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >实体框架6更新-数据库在用-IgnoreChanges创建的迁移中失败

实体框架6更新-数据库在用-IgnoreChanges创建的迁移中失败
EN

Stack Overflow用户
提问于 2015-10-15 16:39:14
回答 2查看 1.3K关注 0票数 0

我正在尝试创建一个特定于五月域的DbContext,它的一个模型类完全由EF管理,另一个模型类被映射到一个数据库视图。为了确保EF不尝试创建这个已经存在的视图,我只将该视图添加到我的DbContext中,并运行以下命令:

代码语言:javascript
运行
复制
Add-Migration InitialUnmanaged -IngoreChanges

这将创建一个带有空的向上和向下的迁移,这正是我想要的。我能够使用此迁移更新我的dev数据库,但是每当我尝试添加包含我的EF管理模型类的第二个迁移时,我就会得到一个错误。

代码语言:javascript
运行
复制
Add-Migration Initial

无法生成显式迁移,因为以下显式迁移挂起: 201510151553565_InitialUnmanaged。在尝试生成新的显式迁移之前应用挂起的显式迁移。

问题是,我已经应用了显式迁移,并且可以在我的MigrationHistory表中看到它。

MigrationId 201510151553565_InitialUnmanaged

有人能帮我理解为什么会发生这种事,以及如何解决这个问题吗?

EN

回答 2

Stack Overflow用户

发布于 2015-10-15 18:01:11

我想出来了。

当我应用迁移时,它将迁移历史表置于与模型相同的默认模式中。但是,当我试图回滚它时,它是在连接用户的模式中寻找迁移历史记录。因为它不在那里,所以它认为数据库在0版。

我创建了一个OracleDbConfiguration类来指定一个自定义HistoryContext,它指定了迁移历史表的默认模式,并且在应用迁移之后,我能够像预期的那样回滚。

我验证了我能够重新创建我的初始步骤并让它们按预期工作,现在我已经显式地为迁移历史表指定了模式。

票数 2
EN

Stack Overflow用户

发布于 2015-10-15 17:12:33

要么删除迁移,要么只运行Update-Database使实体恢复同步。如果它是一个空迁移,您的数据库不会改变。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33153986

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档