Подтвердить что ты не робот

Ошибка миграции Entity Framework 4.3

Я только что установил 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). Я попытался запустить базу данных обновлений в контексте как основного веб-сайта, так и проекта домена, и я получаю ту же ошибку в любом случае.

- ИЗМЕНИТЬ -

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

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

4b9b3361

Ответ 1

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

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

Ответ 2

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

Enable-Migrations -Force 

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

Ответ 3

Если вы уже включили миграции и только начали видеть эту ошибку после некоторых обновлений 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 Package Manager до последней версии. Кроме того, после обновления моей версии Nuget Package Manager мне пришлось перезапустить Visual Studio дважды, прежде чем командная строка NuGet будет работать правильно.

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

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

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

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

Однако перезапуск визуальной студии, похоже, разрешил эти проблемы.

Ответ 4

Для меня эта ошибка произошла из-за того, что в консоли диспетчера пакетов "Проект по умолчанию" в VS2019 был выбран неправильный проект.

Ответ 5

Даже если миграция включена, описанное поведение может возникнуть, если в раскрывающемся меню консоли диспетчера пакетов был выбран неверный проект по умолчанию. Неграфический способ - развернуть используемую команду и указать правильное имя проекта с параметром -ProjectName

Update-Database -Verbose -ProjectName TheCorrectProjectName

Вы все еще можете получить предупреждение как

Невозможно определить допустимый стартовый проект. Вместо этого используйте проект "TheCorrectProjectName". Ваш конфигурационный файл и рабочий каталог могут быть установлены неправильно. Используйте параметр -StartUpProjectName, чтобы установить его явно.

Тем не менее, этот дополнительный параметр командной строки решил проблему для меня.