"Enable-Migrations" завершается с ошибкой после обновления до .NET 4.5 и EF 5

Я только что обновил свой проект MVC4 до .NET 4.5 и EF5 и начал использовать VS2012. Поняв, что мне нужно было настроить автоматическую миграцию в диспетчере пакетов, я побежал Enable-Migrations - EnableAutomaticMigrations и получил ошибку

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

В некотором Исследовании говорится, что это связано с тем, что EF5 не дает предварительных условий. Я запустил Install-Package EntityFramework -IncludePrerelease, но он сказал, что EF5 уже установлен (что было, когда я установил его через NuGetmanager раньше, не указав -IncludePrerelease.

Кто-нибудь знает, что мне нужно сделать, чтобы включить миграцию для моего проекта?

Ответы

Ответ 1

У меня была одна и та же проблема, и я нашел ваш вопрос во время поиска решения.

Я заработал. Для меня проблема заключалась в том, что я первоначально нацелился на платформу .NET 4.0, когда я добавил EF 5 через NuGet. Изменив целевую структуру, а затем переустановив EF 5 через NuGet, исправил ее. Также возможно (см. Комментарии), что просто переустановка EF 5 через NuGet является решением для вас.

У меня была следующая строка в файле App.config, обратите внимание на версию = 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>

После этого изменения я удалил EF 5.0 через NuGet и добавил его снова. Он дал мне следующую конфигурацию в виде, обратите внимание на версию = 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>

После этого изменения он работал.

Ответ 2

Мне также пришлось столкнуться с такой же проблемой, но через день я внезапно обращу внимание на файл с именем packages.config в папке проекта ASP MVC 4. Итак, я получаю

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

Я изменил номер версии на мое подходящее число, то есть для меня использовал EF ver 5.0.0. После того, как я изменил версию, теперь все в порядке.