VS2013 不允许我在不升级到 EF5/6 的情况下更新我的 EF4 模型

VS2013 won't let me update my EF4 model without upgrading to EF5/6

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

在那个阶段,我能够更新模型以反映一些数据库更改。当我启动向导时,它会像往常一样直接将我带到选择表的部分。

我刚刚对数据库进行了一些更改,并尝试再次更新模型,向导要求我提供连接字符串。我不知道为什么,因为这个模型已经有大约三年的历史了,而且自从我们设置它以来我们不需要指定连接字符串,因为它存储在 App.config.

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

我根本不想升级 EF,我想暂时继续使用 EF4。这上周工作得很好,为什么现在坚持要我升级?升级需要进行大量更改,我们现在无法承受。

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

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

有人有什么想法吗?所有开发都陷入停滞,我们无能为力。

奇怪的是,巫师在说谎!好吧,也许这并不奇怪,但它仍然在撒谎。

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

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

感谢所有回复的人。让这成为对尝试此操作的任何人的警告。

因为您在计算机上安装了 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 设计器更改的更多信息。