EF如何在没有迁移历史记录表的情况下检测模型更改

时间:2017-07-25 02:31:00

标签: entity-framework ef-code-first ef-migrations ef-code-first-mapping

我正在使用实体框架代码首次迁移。我第一次没有启用迁移。当我运行项目时,它会创建_migrationhistory表,其中包含一行。

然后我删除了这个表并运行了应用程序,它运行成功。现在我向实体添加一个属性并尝试运行,但它没有运行抱怨模型与数据库不兼容。

我的问题是EF和数据库是如何知道模型被更改的,或者数据库与没有_migrationhistory表的模型或代码中的迁移有什么不同?

1 个答案:

答案 0 :(得分:1)

实体框架首先检查数据库是否具有_migration历史表。如果没有,则尝试创建一个并从头开始运行所有迁移,并将迁移名称作为记录插入迁移历史记录表中。

因为您已删除迁移历史记录表,所以实体框架无法将其迁移记录与迁移文件进行比较。因此,它会尝试再次运行所有迁移。但是,该数据库已经有相关实体的表格。因此,向用户显示错误消息(模型与数据库不兼容)。