Ao tentar scaffold com asp.net core, este comando
scaffold-dbcontext "Fonte de dados = (local); Catálogo inicial = MyDb; Segurança integrada = True;" Microsoft.EntityFrameworkCore.sqlserver -outputdir Modelos
Dá esse erro.
scaffold-dbcontext: O termo 'scaffold-dbcontext' não é reconhecido como o nome de um cmdlet, função, arquivo de script ou programa operável. Verifique a grafia do nome ou, se um caminho foi incluído, verifique se o caminho está correto e tente novamente. Na linha: 1 char: 1 + scaffold-dbcontext "Fonte de dados = (local); Catálogo inicial = MyDB; Em ... + ~~~~~~~~~~~~~~~~~~~~ + CategoryInfo: ObjectNotFound: (scaffold-dbcontext: String) [], CommandNotFoundException + FullyQualifiedErrorId: CommandNotFoundException
Tentei a solução aqui , mas não funciona para mim.
Alguma ideia de qual poderia ser a causa / cura?
fonte
Respostas:
Para mim, aparentemente, funcionou, uma vez que também executei no console do Gerenciador de Pacotes:
Install-Package Microsoft.EntityFrameworkCore.Tools
Certifique-se também:
Para ter outras dependências (por exemplo Microsoft.EntityFrameworkCore, Microsoft.EntityFrameworkCore.SqlServer, Microsoft.EntityFrameworkCore.SqlServer.Design ...) referenciadas dependendo de suas necessidades.
Para selecionar o conjunto certo como alvo para seus comandos no canto superior direito do console PM (frequentemente sou enganado por esquecê-lo ...)
Outro problema que encontrei: com o dbcontext localizado em uma biblioteca de classes separada, encontrei o seguinte erro:
O que eu consegui consertar definindo minha biblioteca de classe como projeto de inicialização no VS (não pergunte por que, pois parece sem sentido, mas funcionou).
Edição tardia, há algo mais a saber: você não pode executar o Scaffold-DbContext em uma biblioteca de classes direcionada apenas para .Net Standard, você também deve habilitar o netcoreapp nele, ou o Scaffold-DbContext reclamará. Para oferecer suporte a ambos os destinos, edite o csproj para colocar:
<TargetFrameworks>netcoreapp2.2;netstandard2.0</TargetFrameworks>
Em vez de<TargetFramework>
seção.Depois de tudo isso, você será capaz de executar sua
Scaffold-DbContext
linha de comando com argumentos adequados e string de conexão.fonte
isso é tudo que vai funcionar
fonte
Certifique-se de executar o VS como administrador e de ter instalado os seguintes pacotes:
fonte
Tive o mesmo problema. No meu caso, faltavam algumas dependências, então certifique-se de que você tenha a seguinte:
Espero que isso ajude. :)
fonte
Se você estiver usando .NetCore 2.2, o comando abaixo funciona perfeitamente para mim no prompt de comando ou no Git Bash. Certifique-se de estar diretamente na pasta do projeto antes de executar o comando.
Por exemplo C: \ App \ ProjectName:
dotnet ef dbcontext scaffold "Server=.\;Database=Databasename;Trusted_Connection=True;" Microsoft.EntityFrameworkCore.SqlServer -o Model
fonte
Eu tinha instalado Microsoft.EntityFrameworkCore.Tools do NuGet Package Manager e estava visível nos pacotes instalados. Mas continuei recebendo esse erro.
Reiniciar o Visual Studio (2019 / versão 16.4.4) corrigiu para mim.
fonte
Scaffold
o comando é parte dodbcontext
comando no EF. Abaixo estão os detalhes para o sucessoscaffold
:Referências de pacote necessárias:
<PackageReference Include="Microsoft.EntityFrameworkCore" Version="3.0.0"/> <PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="3.0.0"/> <PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="3.0.0"/> <PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="3.0.0"/>
Portanto, nosso comando scaffold deve ser semelhante a:
dotnet ef dbcontext scaffold "Server=localhost\SQLEXPRESS;Database=MyDatabase;Trusted_Connection=True;" Microsoft.EntityFrameworkCore.SqlServer -o OutputDirectory
Seu
Server
valor pode ser diferente de acordo com o nome do servidor Db. SubstituaMyDatabase
pelo nome do seu banco de dados comomaster
eOutputDirectory
pelo local em que deseja que suas classes de scaffold recém-criadas comoModels
pasta.fonte
Certifique-se de estar usando o console correto, o "Console do gerenciador de pacotes". Há também um console "Terminal" que é muito semelhante, mas não funciona para este comando. O console do gerenciador de pacotes pode ser encontrado em Exibir -> Outras janelas (a partir do Visual Studio 2019, versão 16.6.5)
fonte
Encontrei outra causa para esse erro recentemente: o próprio NuGet estava desatualizado.
Atualizar o NuGet resolveu o problema.
Se a resposta de Devanathan não funcionar para você, verifique se o NuGet está atualizado.
fonte
Para mim ... ao copiar e colar o comando dos documentos da Microsoft, por algum motivo, um espaçamento extra foi adicionado ao redor dos hifens.
A remoção dos hifens corrigiu:
errado:
Scaffold - DbContext "Server=(localdb)\mssqllocaldb;Database=myDbName;Trusted_Connection=True;" Microsoft.EntityFrameworkCore.SqlServer - OutputDir Models
Boa:
Scaffold-DbContext "Server=(localdb)\mssqllocaldb;Database=myDbName;Trusted_Connection=True;" Microsoft.EntityFrameworkCore.SqlServer -OutputDir Models
Os documentos também dizem que se você receber esse erro, tente reiniciar o Visual Studio.
https://docs.microsoft.com/en-us/ef/core/get-started/aspnetcore/existing-db
fonte