升级到.NET 4.5和EF 5后,“Enable-Migrations”失败

14

我刚刚将我的MVC4项目升级到了.NET 4.5和EF5,并开始使用VS2012。

在意识到我需要重新设置包管理器中的自动迁移之后,我运行了Enable-Migrations - EnableAutomaticMigrations 命令,但是收到了错误信息:

在程序集'MySolutionName'中没有找到上下文类型。

一些研究表明这与EF5不启用预发布版本有关。我运行了Install-Package EntityFramework -IncludePrerelease 命令,但它说EF5已经安装(当我之前通过NuGet管理器安装时,没有指定-IncludePrerelease)。

有人知道我需要做什么才能为我的项目启用迁移吗?


1
请忽略三次“Prerelease”的拼写错误。 - Dan
2个回答

15

我遇到了同样的问题,而且在寻找解决方案时发现了你的问题。

我解决了这个问题。对我来说,问题是我最初通过NuGet添加EF 5时将目标框架定为.NET 4.0。更改目标框架,然后再通过NuGet重新安装EF 5即可解决。也有可能(见评论)只需要重新通过NuGet安装EF 5就可以解决您的问题。

在App.config文件中,我有以下行,注意Version=4.4.0.0:

<configuration>
  <configSections>
    <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=4.4.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
  </configSections>
</configuration>

所以我做的是在解决方案配置中将目标框架设置为4.5,并在应用程序配置中将支持的运行时也设置为4.5。

旧:

  <startup>
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
  </startup>

新的内容:

  <startup>
    <supportedRuntime version="v4.5" sku=".NETFramework,Version=v4.5" />
  </startup>

在此更改后,我通过NuGet删除了EF 5.0,然后再次添加它。这导致以下configSection作为结果显示,注意Version=5.0.0.0:

<configuration>
  <configSections>
    <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=5.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
  </configSections>
</configuration>

修改后,它能正常工作了。


5
我最终通过 Nuget 卸载了 EntityFramework,然后重新安装,这样配置文件就自己“修复”了。 - mattruma
1
我也通过Nuget卸载了EF,然后重新安装,一切都正常。 - Jeremy Coenen
1
我也从整个解决方案中移除了Entity Framework并重新安装了它(全部通过NuGet),问题得到了修复。感谢@mattruma。 - NinjaNye
@Roet 我爱你!谢谢你! - spot

1

我也遇到了同样的问题,但是经过一天的时间后,我突然注意到了ASP MVC 4项目文件夹中一个名为packages.config的文件。所以,我在这里找到了答案。

 <package id="EntityFramework" version="6.0.2" targetFramework="net45" />

我将版本号更改为适合我的版本号,例如我使用的是EF ver 5.0.0。更改版本后,现在一切都很好。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接