已有一个名为' TableName'在数据库中。 - 一个不同的解决方案

时间:2014-10-08 08:49:39

标签: c# entity-framework asp.net-mvc-4

这不是一个真正的问题(但是!),而是分享昨晚发生在我身上的事情,解决方案与stackoverflow或google上的解决方案完全不同。

在为现有应用程序添加一些新功能后,对模型进行了一些更改后,我将应用程序部署到了我们的开发环境而没有任何问题。但是,当我将它部署到我们的生产环境时,我开始得到这个“在数据库中已经有一个名为'TableName'的对象。”错误。

显然,实体框架试图从头开始(重新)创建我的模型而不是更新它。尝试了几个解决方案,包括Global.asax SetInitializer(null),重置迁移等后,没有任何工作,只会导致其他错误。

在某些时候,我只是推动了所有尝试修复更改,并从头开始寻找解决方案。

解决方案实际上是进入第一个迁移文件(通常称为 init Initial )并注释掉代码试图创建表。 之后,我可以看到还有另一个迁移尝试dropfield也会产生同样丑陋的错误(“无法删除字段'FieldName',因为它不存在”,所以我不得不将该行注释为好。

所以基本上,在评论了一些迁移线后,一切都开始工作,模型确实升级到了最新版本

现在,问题就在这里。 显然,Dev和Prd在数据库方面是不同步的(这对我来说很好),但最终创建了由于某种原因与生产不兼容的迁移,这是我无法理解实体框架不是如何能够管理这个。我的意思是,为什么EF试图创建一个表,如果它已经存在?为什么EF试图删除表模式中不存在的字段?

这是EF不涵盖的内容吗?或者在某些时候发生了什么事情搞砸了我项目的整个EF设置?

0 个答案:

没有答案