0

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

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

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

4

1 回答 1

1

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

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

于 2017-07-25T04:03:13.487 回答