使用-IgnoreChanges创建的Update-Database迁移失败

本文关键字:迁移 失败 Update-Database -IgnoreChanges 创建 使用 | 更新日期: 2023-09-27 18:17:57

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

Add-Migration InitialUnmanaged -IngoreChanges

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

Add-Migration Initial

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

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

MigrationId

201510151553565 _initialunmanaged

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

使用-IgnoreChanges创建的Update-Database迁移失败

我明白了。

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

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

我验证了我能够重新创建我的初始步骤,并使它们像预期的那样工作,现在我显式地为Migration History表指定了模式。

要么删除迁移,要么运行Update-Database以使实体恢复同步。如果是空迁移,则不会更改数据库。