我正在使用实体框架代码首次迁移。我第一次没有启用迁移。当我运行项目时,它会创建_migrationhistory表,其中包含一行。
然后我删除了这个表并运行了应用程序,它运行成功。现在我向实体添加一个属性并尝试运行,但它没有运行抱怨模型与数据库不兼容。
我的问题是EF和数据库是如何知道模型被更改的,或者数据库与没有_migrationhistory表的模型或代码中的迁移有什么不同?
答案 0 :(得分:1)
实体框架首先检查数据库是否具有_migration历史表。如果没有,则尝试创建一个并从头开始运行所有迁移,并将迁移名称作为记录插入迁移历史记录表中。
因为您已删除迁移历史记录表,所以实体框架无法将其迁移记录与迁移文件进行比较。因此,它会尝试再次运行所有迁移。但是,该数据库已经有相关实体的表格。因此,向用户显示错误消息(模型与数据库不兼容)。