35

我正在使用实体框架和实体框架迁移来实现使用代码优先和自动迁移的解决方案。

它曾经运行良好,但突然停止检测我对 POCO 所做的更新。现在,当我添加一个新属性(非常简单的属性,如年龄或电子邮件)并执行时Update-Database,什么也没有发生,它给了我这个:

指定“-Verbose”标志以查看迁移期间正在执行的 SQL 命令。
找到 0 个待处理的显式迁移:[]。
添加种子数据(如果在迁移设置类中重写了种子方法)。

什么都没有更新!

有谁知道为什么会这样?

4

1 回答 1

2

这可能有两个原因:

  1. 代码中还有其他一些 DbContext,这就是自动迁移无法决定使用哪个上下文的原因。
  2. 有一些新的变化,循环模式和代码模型的比较,所以 EF 根本找不到差异。

一般来说,自动迁移实现起来既简单又快速,但使用它们并不安全。在某些阶段,这种迁移可能会失败。

几年前,我开发了基于 Linq2SQL、AcroDB Library的微型 ORM ,它使用了SubSonic的自动迁移。几乎与现在可以执行的 EF 迁移相同。它非常适合小型项目和需要处理或更改的少量数据,但是当项目增长到 15+ 表时,它就变成了一场噩梦。这就是为什么微软最近宣布了代码驱动的迁移。它们更安全,更适合项目。此外,您可以查看Migrator.Net(此时它比 EF 好一点)。

于 2012-02-25T09:29:27.987 回答