升级到.NET 4.5和EF 5后,“启用 - 迁移”失败

时间:2012-08-18 19:32:47

标签: asp.net-mvc-4 .net-4.5 entity-framework-5

我刚刚将我的MVC4项目升级到.NET 4.5和EF5并开始使用VS2012。 在意识到我需要再次在程序包管理器中设置自动迁移后,我运行Enable-Migrations - EnableAutomaticMigrations并收到错误

No context type was found in the assembly 'MySolutionName'.

有些Research表示它与EF5有关,不支持预发布。我跑了Install-Package EntityFramework -IncludePrerelease,但它说EF5已经安装了(当我通过NuGetmanager早期安装它时没有指定-IncludePrerelease.

有谁知道我必须做些什么才能为我的项目启用迁移?

2 个答案:

答案 0 :(得分: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(在app config中)。

旧:

  <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>

在改变之后,它起作用了。

答案 1 :(得分:1)

我也遇到了同样的问题,但过了一天我突然注意到ASP MVC 4项目文件夹中名为packages.config的文件。所以,我来了

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

我将版本号更改为适当的号码,即我使用的是EF ver 5.0.0。我改变版本后,现在一切都很好。

相关问题