36

我正在使用实体框架和实体框架迁移来实现使用代码优先和自动迁移的解决方案。实体框架迁移停止检测POCO更新

它曾经很好但突然停止检测我对POCO所做的更新。现在,当我添加一个新的属性(很简单的属性,如年龄或电子邮件),并执行Update-Database,没有任何反应,它给我:

指定“-Verbose”标志来查看SQL命令时正在执行移民。
找到0,等待显式迁移:[]。
添加种子数据(如果在迁移设置类中覆盖了Seed方法)。

没有更新!

有没有人知道为什么会发生这种情况?

+1

AutomaticMigrationsEnabled标志是否仍然设置? – Betty

+0

如果您运行Add-Migration,它是否检测到更改? – Betty

+0

自动迁移设置为True,我没有检查添加迁移,但现在我不得不卸载实体框架迁移,并再次安装它来解决它,现在它的工作如此现在我不能告诉,但如果它发生了再次我会检查添加迁移 – Stacker

回答

2

这可能是两方面的原因:

  1. 有一些其他的DbContext代码,这就是为什么自动迁移不能决定,要使用的上下文。
  2. 有一些新的变化,循环模式和代码模型的比较,所以EF根本找不到差异。

一般来说,自动迁移实施起来很简单快捷,但是使用它们并不安全。在某个阶段,这种迁移可能会失败。

几年前,我开发了基于Linq2SQL的小型ORM,AcroDB Library,它使用的是SubSonic的自动化。与EF迁移现在可以完成的几乎相同。对于小型项目和少量数据处理或更改来说,它是完美的,但是当项目已经发展到15个以上的表格时,它变成了一场噩梦。这就是为什么MS最近宣布Code-driven migrations。他们更安全,更好的项目。此外,你可以看看Migrator.Net(这次比EF好一点)。