0

我试图创建一个特定于DbContext的可能域有一个模型类完全由EF管理,另一个被映射到数据库视图。为了确保EF不会尝试建立这种观点已经存在,我刚加的观点,以我的DbContext和运行以下命令:实体框架6更新数据库无法使用-IgnoreChanges创建的迁移

Add-Migration InitialUnmanaged -IngoreChanges 

这将创建一个空的向上和向下迁移,而这正是我想要的是。我可以使用此迁移更新我的开发数据库,​​但每当我尝试添加包含EF管理的模型类的第二次迁移时,都会出现错误。

Add-Migration Initial 

无法因为以下明确迁移未决以产生一个明确的迁移:[201510151553565_InitialUnmanaged]。在尝试生成新的显式迁移之前应用待处理的显式迁移。

事情是,我已经应用了明确的迁移,我可以在我的MigrationHistory表中看到它。

MigrationId

201510151553565_InitialUnmanaged

谁能帮助我了解为什么发生这种情况,以及如何解决它?

+0

尝试从表中删除迁移并再次运行第一次迁移 –

+0

您是否运行过更新数据库?这将改变数据库方面的模型。 –

+0

发生了一件非常奇怪的事情。当我重置所有内容并使我的初始迁移包括所有内容时,我可以很好地更新数据库,但是当我尝试将其返回时,它会失败。 Update-Database -target:0给出了一个错误,说目标数据库已经在版本0了。 –

回答

0

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

0

我想通了。

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

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

我验证了我能够重新创建我的初始步骤,并使它们按预期工作,现在我明确指定了迁移历史记录表的模式。

相关问题