为什么实体框架确实会在所有事件都是最新的时候生成新的迁移?

时间:2015-10-20 08:54:56

标签: c# .net entity-framework entity

我们通过在专用C#项目中生成所有迁移文件,在我们的MVC项目中使用EF 6进行代码优先迁移。在从开发转发到功能分支之后,我们突然遇到这样的情况:在创建新的迁移时 - 使用包管理器中的add-migration命令 - 我们会得到很多更改,尽管数据库中的__MigrationHistory表是最多的-date,我们没有对模型进行新的更改。什么地方出了错?脚手架确实在哪里检查变化?任何想法如何找到EF为什么会产生我们在早期迁移文件中已有的更改?

更新 ConnectionString 配置是正确的(像往常一样)。我尝试了以下操作:复制生产数据库并使用最新的迁移更新生产数据库。运行 update-database 后,我收到消息:“此迁移文件的Designer代码包含当前Code First模型的快照。此快照用于在您构建下一次迁移时计算模型的更改。如果您对要在此迁移中包含的模型进行其他更改,则可以通过运行“添加迁移Test_homogeo”来重新构建它。再次。“所以我现在再次运行添加 - 迁移,我得到一个包含我已经在数据库和最新的4个迁移文件中的表的迁移文件。不知怎的,我认为上次迁移不起作用,但我将它们放在__MigrationHistory和数据库模式中。我不知道接下来要尝试什么才能找到问题。有什么想法吗?

2 个答案:

答案 0 :(得分:1)

我没有发现问题,但我找到了解决方法。也许其他人会遇到同样的问题。删除上一个“不需要的”/“已经 Up ()和 Down ()方法中的所有代码现有的“迁移。使用 Update-Database 更新数据库。使用 添加迁移 再次添加新迁移时,将不再检测到“不需要的”/“已存在的”更改。作为替代解决方案,请尝试使用 添加迁移 命令 -IgnoreChanges 标记

答案 1 :(得分:0)

它检查数据库架构,您的迁移文件夹和_MigrationHistory表。你一定错过了某个地方。尝试检查连接字符串。