为数据库中的现有列向CodeFirst实体框架中的模型添加属性



我在MySQL数据库中使用实体框架模型优先方法。我在数据库中有一列,但该属性不在Model中。所以现在我的问题是,我需要将它添加到Model中,并在从DB检索数据时填充它。所以现在我的问题是,当我把这个属性添加到模型中时,由于缺少映射,我得到了与DB不匹配的错误。

听起来您必须手动进行迁移,然后用新的模型上下文更新__MigrationHistory表。

我不确定是否有官方文档,但我以前也做过,这里有最简单的方法:

  1. 创建一个新数据库,为空
  2. 将其升级到当前型号
  3. 将列与原始MySQL数据库中的列完全一样添加到模型中
  4. 将第二个数据库升级到新模型
  5. __MigrationHistory表中获取新行,并将其复制到原始数据库中

您将查找应该具有更长Model值的最后一行。

这是一个非常敏感的过程,并不总是容易做到。请确保在生产数据库的副本上对其进行多次测试。


您也可以尝试此答案中提到的方法:https://stackoverflow.com/a/14286509/4564272

运行:Update-Database -Script并提取INSERT INTO [__MigrationHistory]代码,然后在服务器上手动运行。


这两者都意味着实体框架应该认识到数据库和模型匹配。当代码优先的模型和数据库不同步时,我以前也这样做过,这个过程使它们重新进入同步。

最新更新