Не удается включить миграции для Entity Framework на VS 2017.NET Core

Я только что установил VS 2017 и создал новый проект Core. Внутри я добавил:

  • Microsoft.EntityFrameworkCore(1.1.0)
  • Microsoft.NETCore.App(1.1.0)

Я также создал папку под названием Models с классом в ней. Затем я пошел в консоль диспетчера пакетов и выполнил разрешения-миграции, чтобы VS создал файлы, необходимые для меня. Однако вместо необходимых файлов я получил следующую ошибку.

Термин "enable-migration" не распознается как имя командлета, функции, файла сценария или операционной программы. Проверьте правильность написания имени или, если включен путь, проверьте правильность пути и повторите попытку.

Что я должен здесь делать?

Кажется, мне не повезло. Это очень необычная комбинация (Core VS17 и EF), поэтому практически нет информации по этому вопросу. В некоторых руководствах говорится об изменении пакета package.json вручную, что довольно сложно, потому что VS 2017, похоже, обновляет Core, так что восстановление в dotnet не ищет его, а скорее для xxx.csproj.

В целом, я смущен и довольно неопределен, как укусить проблему.

Ответы

Ответ 1

У EF Core больше нет команды Enable-Migrations. Миграция включена "по умолчанию". Добавьте новую миграцию с помощью Add-Migration.

Документация о командах диспетчера пакетов здесь

Ответ 2

У меня была аналогичная проблема с Visual Studio 2017 и импортированным проектом из VS 2015, EF Migrations больше не работала.

После прочтения документации по GitHub: https://github.com/aspnet/EntityFramework/issues/7031

Я установил через Nuget этот пакет:

"Microsoft.EntityFrameworkCore"

Это вызвало каскадный эффект нескольких загрузок/установок. После установки и перезапуска VS 2017, теперь все возвращается к норме.

Через два дня, с другим проектом Visual Studio 2015, у меня была такая же проблема, и я решил его выполнить в соответствии с описанной выше процедурой, но затем я получил эту новую ошибку:

"Правила безопасности наследования, нарушенные по типу:" System.Net.Http.WebRequestHandler ". Производные типы должны либо соответствовать доступности безопасности базового типа, либо быть менее доступными".

Я решил эту ошибку, обновив проект Framework до последней ".NET Framework 4.6.2" (Scary.... но он работал без каких-либо дополнительных проблем)

Я ссылался на эту документацию на GitHub: https://github.com/dotnet/corefx/issues/11100

Ответ 3

Как упоминалось ранее, включение миграции является устаревшим и все равно включено, и вы можете использовать Add-Migration InitialCreate.

Я добавлю, что вам не нужно добавлять дополнительные пакеты в проект, поскольку он уже будет ссылаться на необходимые сборки в метапаке Microsoft.AspNetCore.All.

Вы также можете использовать консоль (cmd/shell в зависимости от вашей ОС) вместо консоли питания Power Power. Для этого вам нужно добавить ссылку на инструмент dotnet: отредактируйте файл проекта (щелкните его правой кнопкой мыши и выберите "edit.csproj") и добавьте следующую ссылку в ItemGroup:

<DotNetCliToolReference Include="Microsoft.EntityFrameworkCore.Tools.DotNet" Version="2.0.0"></DotNetCliToolReference>

а затем в консоли типа dotnet ef migrations add InitialCreate

Добавить перенос в.NET Core

.NET Core CLI

Ответ 4

Я только что установил Microsoft.EntityFrameworkCore.Tools, затем я попытался выполнить enable-migrations после чего получил следующее сообщение в VS2017:

Enable-Migrations is obsolete. Use Add-Migration to start using Migrations.

Надеюсь, поможет.

Ответ 5

Постановили

  1. Щелкните правой кнопкой мыши на проекте, затем выберите опцию: Управление пакетом NuGet; в разделе "Обзор" найдите надстройку EntityFramework, установите его и перезапустите Visual Studio.
  2. Создайте класс MyDbContext, который наследуется от DbContext.
  3. В Инструменты> Диспетчер пакетов NuGet> Консоль диспетчера пакетов
  4. Enable-Миграция
  5. add-migration InitialModel

Ответ 6

перейдите на Tools-> Пакет NuGet Manager-> Консоль диспетчера пакетов

записывать

install-package EntityFramework

затем

enable-migrations

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

add-migration migrationNameTest

'igrationNameTest '- это имя миграции, которое вы хотите назначить ему, однако для запуска миграции перейдите в диспетчер пакетов и запустите

update-database