У меня есть решение .NET Core 3.0, которое содержит 5 проектов. В одном из проектов используется EF6, а в другом - EF Core, поэтому EF6 и EF Core используются бок о бок. Visual Studio настолько свеж, насколько это возможно (16.3.5). Пытаясь создать миграцию для проекта, который использует EF6 и выполняя команду Add-Migration на моем ноутбуке с Windows 10, я вижу предупреждающее сообщение: «Установлены и Entity Framework 6, и Entity Framework Core. Инструменты Entity Framework 6Выполнение. Использовать EntityFrameworkCore \ Update-Database для Entity Framework Core ", но все идет хорошо и миграция завершается успешно.
Команда Get-Module отображает следующую таблицу:
---------- ------- ---- ----------------
Script 6.3.0 EntityFramework6 {Add-EFDefaultConnectionFactory, Add-EFProvider, Add-Migration, Enable-Migrations...}
Script 3.0.0 EntityFrameworkCore {Add-Migration, Drop-Database, Enable-Migrations, Get-DbContext...}
Script 2.0.0.0 NuGet {Add-BindingRedirect, Find-Package, Get-Package, Get-Project...}
Script 0.0 profile
На другой рабочей станции с Windows 7 на борту, выполнив ту же команду, я вижу почти ту же таблицу, но с пустым списком командлетов, экспортированных EF6:
---------- ------- ---- ----------------
Script 6.3.0 EntityFramework6
Script 3.0.0 EntityFrameworkCore {Add-Migration, Drop-Database, Enable-Migrations, Get-DbContext...}
Script 2.0.0.0 NuGet {Add-BindingRedirect, Find-Package, Get-Package, Get-Project...}
Script 0.0 profile
В конце концов, в таком случае я не могувыполнить миграцию в проекте, связанном с EF6. Как я мог это исправить? Ни 'Add-Migration', ни 'EntityFramework \ Add-Migration', ни 'EntityFrameworkCore \ Add-Migration' не будут работать.
ОБНОВЛЕНИЕ 17 октября 2019 Мне кажется, что мой VSустановка повреждена. Хорошей новостью является то, что EF6.3 поставляется с утилитой ef.exe, которая заменяет migrate.exe и позволяет разработчику создавать миграции с использованием командной строки вне VS IDE.