Термин "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".
![введите описание изображения здесь]()
- Запустите команду в консоли диспетчера пакетов
![введите описание изображения здесь]()
что все это будет работать
Ответ 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