Al intentar andamios con asp.net core este comando
scaffold-dbcontext "Fuente de datos = (local); Catálogo inicial = MyDb; Seguridad integrada = Verdadero;" Microsoft.EntityFrameworkCore.sqlserver -outputdir Modelos
Da este error.
scaffold-dbcontext: el término 'scaffold-dbcontext' no se reconoce como el nombre de un cmdlet, función, archivo de script o programa operable. Verifique la ortografía del nombre o, si se incluyó una ruta, verifique que la ruta sea correcta y vuelva a intentarlo. En la línea: 1 carácter: 1 + scaffold-dbcontext "Fuente de datos = (local); Catálogo inicial = MyDB; En ... + ~~~~~~~~~~~~~~~~~ + CategoryInfo: ObjectNotFound: (scaffold-dbcontext: String) [], CommandNotFoundException + FullyQualifiedErrorId: CommandNotFoundException
He probado la solución aquí , pero no me funciona.
¿Alguna idea de cuál podría ser la causa / cura?
fuente

Respuestas:
Para mí, aparentemente funcionó una vez que también me ejecuté en la consola del Administrador de paquetes:
Install-Package Microsoft.EntityFrameworkCore.ToolsTambién asegúrese de:
Para tener otras dependencias (por ejemplo, Microsoft.EntityFrameworkCore, Microsoft.EntityFrameworkCore.SqlServer, Microsoft.EntityFrameworkCore.SqlServer.Design ...) referenciadas según sus necesidades.
Para seleccionar el ensamblaje correcto como objetivo para sus comandos en la esquina superior derecha de la consola PM (con frecuencia me engaño olvidándolo ...)
Otro problema que encontré: con el dbcontext ubicado en una biblioteca de clases separada, me encontré con el siguiente error:
Lo cual pude solucionar configurando mi biblioteca de clases como proyecto de inicio en VS (no preguntes por qué, ya que parece no tener sentido, pero funcionó).
Edición tardía, hay algo más que saber: no puede ejecutar Scaffold-DbContext contra una biblioteca de clases que solo tenga como objetivo .Net Standard, también debe habilitar netcoreapp en ella, o Scaffold-DbContext se quejará. Para admitir ambos objetivos, edite el csproj para poner:
<TargetFrameworks>netcoreapp2.2;netstandard2.0</TargetFrameworks>En lugar de<TargetFramework>sección.Después de todo esto, podrá ejecutar su
Scaffold-DbContextlínea de comando con los argumentos adecuados y la cadena de conexión.fuente
eso es todo lo que funcionará
fuente
Asegúrese de ejecutar VS como administrador y de haber instalado los siguientes paquetes:
fuente
Tuvo el mismo problema. En mi caso, me faltaban algunas dependencias, así que asegúrese de tener la siguiente:
Espero que esto ayude. :)
fuente
Si está utilizando .NetCore 2.2, el siguiente comando funciona como un encanto para mí en el símbolo del sistema o en Git Bash. Asegúrese de estar directamente en la carpeta del proyecto antes de ejecutar el comando.
Por ejemplo C: \ App \ ProjectName:
dotnet ef dbcontext scaffold "Server=.\;Database=Databasename;Trusted_Connection=True;" Microsoft.EntityFrameworkCore.SqlServer -o Modelfuente
Había instalado Microsoft.EntityFrameworkCore.Tools desde NuGet Package Manager y estaba visible en los paquetes instalados. Pero seguí recibiendo este error.
Al reiniciar Visual Studio (2019 / Versión 16.4.4) me lo arregló.
fuente
ScaffoldEl comando es parte deldbcontextcomando en EF. A continuación se muestran los detalles para el éxitoscaffold:Se requieren referencias de paquetes:
<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"/>Entonces, nuestro comando de andamio debería verse así:
dotnet ef dbcontext scaffold "Server=localhost\SQLEXPRESS;Database=MyDatabase;Trusted_Connection=True;" Microsoft.EntityFrameworkCore.SqlServer -o OutputDirectorySu
Servervalor puede diferir según el nombre de su servidor Db. ReemplaceMyDatabasecon el nombre de su base de datos comomasteryOutputDirectoryen la ubicación donde desea que sus clases con scaffold recién creadas comoModelscarpeta.fuente
Asegúrese de que está utilizando la consola correcta, la "Consola del administrador de paquetes". También hay una consola "Terminal" que se ve muy similar, pero no funciona para este comando. La consola del administrador de paquetes se puede encontrar en Ver -> Otras ventanas (a partir de Visual Studio 2019, ver. 16.6.5)
fuente
Me encontré con otra causa de este error recientemente: NuGet estaba desactualizado.
La actualización de NuGet resolvió el problema.
Si la respuesta de Devanathan no funciona para usted, verifique que NuGet esté actualizado.
fuente
Para mí ... al copiar y pegar el comando de los documentos de microsoft, por alguna razón se agregó un espacio adicional alrededor de los guiones.
Eliminar los guiones lo solucionó:
incorrecto:
Scaffold - DbContext "Server=(localdb)\mssqllocaldb;Database=myDbName;Trusted_Connection=True;" Microsoft.EntityFrameworkCore.SqlServer - OutputDir Modelsbueno:
Scaffold-DbContext "Server=(localdb)\mssqllocaldb;Database=myDbName;Trusted_Connection=True;" Microsoft.EntityFrameworkCore.SqlServer -OutputDir ModelsLos documentos también dicen que si recibe este error, intente reiniciar Visual Studio.
https://docs.microsoft.com/en-us/ef/core/get-started/aspnetcore/existing-db
fuente