【问题标题】:EF code first won't recognize my DBEF 代码首先无法识别我的数据库
【发布时间】:2015-10-09 09:47:09
【问题描述】:

我面临的问题如下:

我一直很高兴首先使用 Entity Framework 6 和我的 SQLServer 2014 DB 进行代码开发,更新数据库,提取脚本,到目前为止一切正常。问题是它突然失去了对我数据库的跟踪,每当我尝试添加新的迁移时,它都会说我必须更新数据库,因为它仍然有待应用的迁移。

如果我查看我正在使用的数据库,它会显示所有内容都在那里,甚至 __MigrationHistory 表以及我完成的每个迁移都已注册。即使我接受代码优先建议并尝试更新数据库。这里没有什么意外......它尝试创建的第一个表会引发错误,因为它已经存在。

您能否就此提供一些指导?

提前致谢,

P.

【问题讨论】:

  • 你试过add-migration命令的force参数吗?还要检查其他参数,在包管理器控制台中输入“get-help add-migration -detailed”或“get-help Add-Migration -examples”。
  • 是的,我什么都试过了。大约一个小时前我想通了。看看我自己的回答 :) btw:非常感谢您的回复!
  • 好的。您的回答很有趣,您所说的“更新上下文键”是什么意思?
  • 所以在 __MigrationHistory 表上,我有以下字段:MigrationId、ContextKey、Model 和 ProductVersion。结果是 ContextKey 字段包含迁移配置的命名空间,因此如果您在代码中更改它,Code First 将无法识别您数据库上的任何内容。

标签: ef-code-first entity-framework-6 code-first


【解决方案1】:

我只是想通了。

碰巧我更改了项目名称和整个命名空间。迁移本身的命名空间存储在 DB 中,因此当我更改命名空间时,Code First 无法在迁移表上找到它。

为每次迁移到当前命名空间更新 ContextKey 解决了我的问题。

感谢您的宝贵时间。

【讨论】:

    猜你喜欢
    • 2012-02-01
    • 2019-08-01
    • 2018-09-18
    • 1970-01-01
    • 1970-01-01
    • 2014-09-29
    • 1970-01-01
    • 2023-03-28
    • 2019-10-23
    相关资源
    最近更新 更多