VS2013不让我更新我的EF4型号而不升级到EF5 / 6

时间:2015-01-18 17:08:17

标签: entity-framework visual-studio-2013

我们有一个在VS2010中开发的大型解决方案。我上周将它升级到VS2013,但是将EF版本保留为4,因为升级到更高版本需要进行大量更改,我们现在还不想这样做。

在那个阶段,我能够更新模型以反映一些数据库更改。当我启动向导时,它直接转到了您选择表格的部分,就像它一直以来一样。

我刚刚做了一些更改数据库,并尝试再次更新模型,向导要求我输入连接字符串。我不知道为什么,因为这个模型大约有三年了,我们不需要指定连接字符串,因为我们设置它,因为它存储在App.config中。

即使我指定了连接细节,它现在也在询问我想要使用哪个版本的EF,并且只向我提供EF5.0。 EF6.0有一个单选按钮,但它已被禁用。 EF4只是没有显示为选项。

我根本不想升级EF,我想暂时继续使用EF4。上周工作正常,为什么现在坚持升级?升级需要我们现在无法承担的大规模变更。

我看到another question解决了相关问题,但这不是问题所在。我没有接近代码生成阶段,因为它甚至不允许我选择要添加的表。

我在VS2010中打开了解决方案,向导直接进入了选择表格的部分,这就是VS2013中应该发生的事情。

任何想法?由于我们无能为力,所有的发展都陷入停滞。

2 个答案:

答案 0 :(得分:2)

奇怪的是,巫师撒谎了!好吧,也许这不是那么奇怪,但是它说的都是一样的。

我决定尝试一下,看看如果我让它升级到EF5会发生什么。我设置连接属性并将单选按钮设置为EF5.0(不是我有任何其他选择)。当它更新模型时,我看看它有什么变化,但它没有!解决方案仍然像以前一样使用EF4,如果我现在更新模型,我会直接选择表格。

所以,看起来这是某种错误或奇怪的一次性行为,但它现在似乎有效。

感谢所有回复的人。这是对任何尝试此事的人的警告。

答案 1 :(得分:1)

因为您在计算机上安装了VS2013,所以它安装了.NET Framework 4.5(如果之前没有安装过的话)。作为.NET Framework 4.5一部分的EF版本(核心组件,即System.Data.Entity.dll)是EF5(EF4在.NET Framework 4中)。请注意,.NET Framework 4.5是一个就地更新,这意味着一旦安装了.NET Framework 4.5,就不再在.NET Framework 4上运行任何内容,因为您没有在框中使用它。在您的应用程序中定位.NET Framework 4仅仅确保您不使用此.NET Framework版本中不可用的API,但是当涉及到运行时,应用程序将在该框上安装的任何内容上运行。 返回EF - EF4和EF5之间的核心组件是向后兼容的,因此EF4应用程序在升级到EF5后应该无需更改即可运行。在向导中禁用EF6的原因是您的应用程序已经引用了System.Data.Entity.dll,这意味着您已经使用了EF5。既可以使用EF5也可以使用EF6但不推荐,因为它非常棘手。您可以在blog post上了解有关VS2013中EF设计人员更改的更多信息。