Термин "scaffold-dbcontext" не распознается как имя командлета, функции, файла script или операционной программы

При попытке эскизировать с помощью ядра asp.net эта команда

scaffold-dbcontext "Источник данных = (локальный); Начальный Каталог = MyDb; Integrated Security = True;" Модели Microsoft.EntityFrameworkCore.sqlserver -outputdir

Дает эту ошибку.

scaffold-dbcontext: термин "scaffold-dbcontext" не распознается как имя командлета, функции, файла script или исполняемой программы. Проверьте правильность написания имени или укажите путь к нему. что путь правильный и повторите попытку. По строке: 1 char: 1 + scaffold-dbcontext "Источник данных = (локальный); Начальный каталог = MyDB; В... + ~~~~~~~~~~~~~~~~~~     + CategoryInfo: ObjectNotFound: (scaffold-dbcontext: String) [], CommandNotFoundException     + FullyQualifiedErrorId: CommandNotFoundException

Я пробовал решение здесь, но это не работает для меня.

Любая идея, что может быть причиной/лекарством?

Ответ 1

По-моему, это сработало, как только я запустился в консоли диспетчера пакетов

 Install-Package Microsoft.EntityFrameworkCore.Tools 

Также убедитесь, что:

  • Чтобы ссылки на другие зависимости (например, Microsoft.EntityFrameworkCore, Microsoft.EntityFrameworkCore.SqlServer, Microsoft.EntityFrameworkCore.SqlServer.Design...) зависели от ваших потребностей.

  • Чтобы выбрать правильную сборку в качестве цели для ваших команд в верхнем правом углу консоли PM (меня часто обманывают, забывая об этом...)

Другая проблема, с которой я столкнулся: с dbcontext, расположенным в отдельной библиотеке классов, я столкнулся со следующей ошибкой:

Не удалось найти сборку поставщика с именем Microsoft.EntityFrameworkCore.SqlServer. Убедитесь, что указанное имя является правильным и на него ссылается проект.

Что я смог исправить, установив мою библиотеку классов в качестве проекта запуска в VS (не спрашивайте почему, но это сработало).

Ответ 2

  • Убедитесь, что это доступно в файле project.json "Microsoft.EntityFrameworkCore.Tools.DotNet": "1.0.0-preview3-final".

введите описание изображения здесь

  1. Запустите команду в консоли диспетчера пакетов

введите описание изображения здесь

что все это будет работать

Ответ 3

В последнее время я столкнулся с другой причиной этой ошибки: сам NuGet устарел.

Обновление NuGet разрешило проблему.

Если ответ Devanathan не работает для вас, убедитесь, что сам NuGet обновлен.

Ответ 4

Если вы используете .NetCore 2.2, приведенная ниже команда работает для меня как чудо в командной строке или в Git Bash. Убедитесь, что вы находитесь непосредственно в папке проекта, прежде чем запускать команду.

Например, C:\App\ProjectName:

 dotnet ef dbcontext scaffold "Server=.\;Database=Databasename;Trusted_Connection=True;" Microsoft.EntityFrameworkCore.SqlServer -o Model

Ответ 5

Для меня... при копировании и вставке команды из документов Microsoft, по некоторым причинам был добавлен дополнительный интервал вокруг дефисов.

Удаление дефисов исправило это:

неправильно:

Scaffold - DbContext "Server=(localdb)\mssqllocaldb;Database=myDbName;Trusted_Connection=True;" Microsoft.EntityFrameworkCore.SqlServer - OutputDir Models

хорошо:

Scaffold-DbContext "Server=(localdb)\mssqllocaldb;Database=myDbName;Trusted_Connection=True;" Microsoft.EntityFrameworkCore.SqlServer -OutputDir Models

В документах также говорится, что если вы получили эту ошибку, попробуйте перезапустить Visual Studio.

https://docs.microsoft.com/en-us/ef/core/get-started/aspnetcore/existing-db