Ошибка миграции Entity Framework 4.3 - PullRequest
12 голосов
/ 30 января 2012

Я только что установил EF 4.3-beta1 для совершенства миграции, и я не могу заставить его работать.Я получаю ошибку:

PM> Update-Database -Verbose
Using NuGet project 'Project.Domain'.
Using StartUp project 'ProjectWebSite'.
System.InvalidOperationException: No migrations configuration type was found in the assembly 'Project.Domain'.
   at System.Data.Entity.Migrations.Design.ToolingFacade.BaseRunner.FindConfiguration()
   at System.Data.Entity.Migrations.Design.ToolingFacade.BaseRunner.GetMigrator()
   at System.Data.Entity.Migrations.Design.ToolingFacade.UpdateRunner.RunCore()
   at System.Data.Entity.Migrations.Design.ToolingFacade.BaseRunner.Run()
No migrations configuration type was found in the assembly 'Project.Domain'.

Я добавил новый столбец к 2 классам EF:

public class MasterInstance
{
    public int MasterInstanceId { get; set; }
    [Required] public string HostName { get; set; }
    [Required] public string Name { get; set; } /* <-- THIS IS NEW */
    [Required] public string ConnectionString { get; set; }
    public virtual ICollection<MasterInstanceLocation> MasterInstanceLocations { get; set; }
}

И мой DbContext выглядит так:

public class ProjectDontext: DbContext, IProjectContext
{
    public IDbSet<Installer> Installers { get; set; }
    public IDbSet<MasterInstance> MasterInstances { get; set; }
    public IDbSet<MasterInstanceLocation> MasterInstanceLocations { get; set; }
}

Есть идеи?Мои классы EF и контекст находятся в отдельной сборке (Project.Domain).Я попытался запустить update-database в контексте как основного веб-сайта, так и проекта домена, и я получаю ту же ошибку в любом случае.

- EDIT -

Решение найдено.Оказывается, вам нужно включить миграцию для вашего проекта.Вы можете сделать это, запустив Enable-Migrations в консоли NuGet (убедитесь, что у вас выбран правильный проект - для меня это был проект project.domain).

Это пошаговое руководство предоставляет большеинформация

Ответы [ 3 ]

19 голосов
/ 30 января 2012

Решение найдено. Оказывается, вам нужно включить миграцию для вашего проекта. Вы можете сделать это, запустив Enable-Migrations в консоли NuGet (убедитесь, что выбран правильный проект - для меня это был проект project.domain).

В этом пошаговом руководстве содержится дополнительная информация

6 голосов
/ 21 июня 2013

Иногда, даже если вы включили миграцию, эта проблема может возникнуть. Это означает, что файл конфигурации был удален. В этом случае вы можете запустить

Enable-Migrations -Force 

в консоли диспетчера пакетов. -Force параметр для переопределения файла конфигурации миграции.

1 голос
/ 16 марта 2016

Если вы уже включили миграции и только начали видеть эту ошибку после некоторых обновлений Windows, убедитесь, что вы используете одну и ту же версию Entity Framework во всех проектах, использующих диспетчер пакетов NuGet.

Недавние обновления Windows, возможно, установили более новую версию Entity Framework в ваш активный проект.

Справочная информация. Около 16 марта 2016 г. я начал получать сообщение об ошибке «Тип конфигурации без миграции» при попытке добавить миграции в проект, в котором я уже включил миграции и успешно выполнял миграции ранее.

Я заметил, что около 10 марта была выпущена новая стабильная версия Entity Framework 6.

Если я указал параметр -ContextTypeName в команде enable-migrations, я получаю сообщение об ошибке, указывающее, что миграции уже включены.

Другая ошибка, возникшая при устранении неполадок, показала, что тип конфигурации не наследуется от System.Data.Entity.ModelConfiguration.EntityTypeConfiguration, даже если это так.

Это заставило меня поверить, что разные версии Entity Framework конфликтуют.

Разрешение:

1) Инструменты -> Диспетчер пакетов Nuget -> Управление пакетами Nuget для решения

2) (Не уверен, что этот шаг необходим, но ..) Я обновил свою версию диспетчера пакетов Nuget до последней версии. Кроме того, после обновления моей версии диспетчера пакетов Nuget мне пришлось дважды перезапустить Visual Studio, прежде чем командная строка NuGet заработала правильно.

3) Сервис -> Диспетчер пакетов Nuget -> Управление пакетами Nuget для решения -> Поиск установленных пакетов -> Тип Entity Framework

а. Там вы можете увидеть более одной версии Entity Framework.

б. Нажмите «Управление» в каждой версии Entity Framework и убедитесь, что ваши проекты используют ту же версию Entity Framework. • Снимите флажок с версии Entity Framework, которую вы не используете, и для версии Entity Framework, которую вы используете, убедитесь, что она проверена во всех ваших проектах, которые в ней нуждаются.

Опять же, как отмечалось в шаге 2, мне пришлось дважды перезапустить Visual Studio, чтобы заставить консоль диспетчера пакетов NuGet работать должным образом после обновления моей версии диспетчера пакетов NuGet. Я получил ошибку при запуске консоли в первый раз, и «исключение, вызывающее createinstancefrom с 8 аргументами, не может загрузить файл или сборку EntityFramework» при повторном выполнении команды enable-migrations.

Однако перезапуск visual studio решил эти проблемы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...