entity-framework - EF 迁移声称上下文发生了变化,但实际上没有

标签 entity-framework entity-framework-migrations

我正在使用 Entity Framework Migrations & Code First,最近遇到了一个非常奇怪的问题。 该问题在版本 4.3.1 和 4.4 中重现。

EF 认为上下文已更改,但实际上并没有。 当我更改解决方案的路径时会发生这种情况。例如: 如果我的解决方案位于 C:\integration\something.sln 中,迁移可能会工作,但如果现在我将路径更改为 C:\development\something.sln 并重新构建解决方案,迁移将抛出一个异常,说明有数据库中的未决更改。 (当然没有对源代码做任何改动。

我使用 IL Disassembler 创建了输出程序集的转储,而使用 BeyondCompare,我发现存在差异。我假设数据是相同的,但它的写入顺序不同......

EF 如何确定上下文是否发生变化?程序集校验和是否有可能出现不同并导致 EF 认为发生了变化?

欢迎提出任何想法...

最佳答案

首先,这不是迁移问题 - 它可能是 Entity Framework 算法中的错误,用于检查数据库中是否有更改。

我有一个类层次结构,其中包含一个没有属性的抽象类,使该类不抽象就解决了问题。

在获得一些宝贵的调试经验后,我找到了几种解决这个问题的方法,每一种都比之前的方法引起了更多的关注,这让我非常确信我陷入了一个非常罕见的角落案例。正如我提到的,我决定通过创建一个非抽象类来解决问题。

我试图在一个干净的解决方案中重现该错误,以便我可以将其发送给 Microsoft,但直到现在它还没有真正起作用。

所以...总而言之,如果您发现自己遇到这样的问题(非常令人沮丧),一个好的建议是寻找抽象类!

关于entity-framework - EF 迁移声称上下文发生了变化,但实际上没有,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12164063/

相关文章:

c# - 使用 LINQ 避免 ObjectDisposedException (LINQ2SQL)

c# - 使用 SimpleMembership MVC 4 创建默认角色和用户 - 代码优先方法

c# - EF Core 迁移从新的复合索引中删除第一个外键索引

c# - ASP.NET MVC 5 身份 userManager.IsInRole

entity-framework-6 - 如何使用ef6.exe

entity-framework - 使用 Entity Framework 5 保存大图

entity-framework - 数据读取器与指定型号不兼容

entity-framework - EF 代码首次迁移错误 "Object has been disconnected or does not exist at the server"

entity-framework - 存储库模式 MVC4 EF5

entity-framework - 如何将 View 添加到 Entity Framework 实体模型?