EF迁移声称上下文中有变化,而没有变化

时间:2012-08-28 17:00:11

标签: entity-framework ef-migrations

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

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

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

EF如何确定上下文是否有变化?组装校验和是否可能出现不同并且会导致EF认为存在变化?

欢迎任何想法......

1 个答案:

答案 0 :(得分:2)

首先,这不是迁移问题 - 它可能是实体框架算法中的一个错误,用于检查数据库中是否存在更改。

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

在获得一些宝贵的调试经验之后,我找到了几种解决这个问题的方法,每一种方法都比以前更加引人注目,这让我非常确信我遇到了一个非常罕见的角落案例。正如我所提到的,我决定通过使一个课程不抽象来解决。

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

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