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.Tools
Tambié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-DbContext
lí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 Model
fuente
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
Scaffold
El comando es parte deldbcontext
comando 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 OutputDirectory
Su
Server
valor puede diferir según el nombre de su servidor Db. ReemplaceMyDatabase
con el nombre de su base de datos comomaster
yOutputDirectory
en la ubicación donde desea que sus clases con scaffold recién creadas comoModels
carpeta.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 Models
bueno:
Scaffold-DbContext "Server=(localdb)\mssqllocaldb;Database=myDbName;Trusted_Connection=True;" Microsoft.EntityFrameworkCore.SqlServer -OutputDir Models
Los 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