entity-framework - update - scaffold-dbcontext
¿Cómo puedo hacer un proyecto de Entity Framework Core y agregar una migración en Visual Studio 2015 desde el indicador de nuget? (2)
Lo siguiente solo se aplica a dnx, que era parte de ASP.NET Core RC1. Esto ha sido reemplazado y no es parte de ASP.NET Core.
Respondiendo a sus preguntas sobre la mejor manera que está buscando para ejecutar el comando dnx:
Mi comando dnx también estaba dando el error.
El término ''dnx'' no se reconoce como el nombre de un cmdlet, función,
tanto en mi consola de Visual Studio package manager como en Windows PowerShell.
Después de mucha frustración pude resolverlo.
Aquí están los pasos que hice para que funcione.
- Cierra todas las instancias de Visual Studio.
- Elimine la carpeta .dnx en C: / Users / YOURUSERNAME / .dnx. El mío era más de 1 GB
- Abra Visual Studio 2015. Cree una nueva plantilla predeterminada de la aplicación web ASP.NET 5. Constrúyelo y ejecútalo. Esto recreará la carpeta .dnx. Luego el tamaño de la carpeta fue de casi 600MB.
- Abrir PowerShell
Navegue al directorio bin .dnx
cd/ cd users/YOURUSERNAME/.dnx/bin
Ejecuta el comando
./dnvm upgrade
Si aparece un mensaje de error "la ejecución de scripts está deshabilitada en este sistema". A continuación, ejecute el siguiente comando para darle permiso primero
Set-ExecutionPolicy RemoteSigned
Ir Abrir Visual Studio. Entonces podrá escribir el comando dnx en la consola del administrador de paquetes y en powershell
dnx
y lo reconocerá
En Visual Studio 2015, creé un proyecto Core de ASP.net (anteriormente llamado ASP.NET 5). La plantilla para el proyecto crea un localdb de MS SQL para la persistencia, junto con el marco de la entidad y algunas tablas de autenticación.
Después de descubrir cómo navegar por la base de datos localdb que se creó para este proyecto, decidí intentar modificar un objeto modelo e intentar una aplicación de muestra de la plantilla del sitio web MVC de Code First con ASP.NET. Utiliza EF para proporcionar persistencia de inicio de sesión a un localdb. Intenté usar el
La aplicación de demostración ya incluye una carpeta de Migraciones. Pero si escribe add-migration SomeNameHere
en la consola del administrador de paquetes, o enable-migrations
, parece que no es posible trabajar con las migraciones de ER con los proyectos de muestra.
Agregué una propiedad de cadena a la unidad IdentityModel.cs
e intenté agregarla manualmente a mano al archivo 0000...IdentitySchema.cs
, pero obviamente no sé cómo hacerlo correctamente, como cuando ejecuto Aplicación, tengo algunos errores, que se muestran a continuación. Creo que básicamente necesito que la herramienta de creación de código de Entity Framework genere un poco de unidad .cs de esqueleto que vaya a ingresar a la carpeta Migraciones.
Las cosas habituales que la gente sugiere hacer ahora son:
- Asegúrese de que se ejecutó como administrador. (Hecho)
- Asegúrese de desinstalar Entity Framework y reinstalarlo en la Solución en la que desea que esté activo (Hecho)
La reinstalación se veía así desde la consola del administrador de paquetes:
PM> Uninstall-Package EntityFramework
Uninstalling NuGet package EntityFramework.7.0.0-beta4.
Successfully uninstalled ''EntityFramework.7.0.0-beta4'' from WebApplicationDNX.
PM> Install-Package EntityFramework -IncludePrerelease
Installing NuGet package EntityFramework.7.0.0-beta4.
Successfully installed ''EntityFramework.7.0.0-beta4'' to WebApplicationDNX.
PM>
Aquí creo que estoy cometiendo un error porque estoy intentando ejecutar un comando como agregar migración y no puedo hacerlo. Resulta que esto nunca me fue apoyado para probar cosas como esta:
PM> add-migration DummyMigrate
add-migration : The term ''add-migration'' is not recognized as the name of a cmdlet, function, script file, or operable program. ....
PM> enable-migration
enable-migration : The term ''enable-migration'' is not recognized as the name of a cmdlet, function, script file, or operable program.
...
¿Es posible lograr que una migración del marco de la entidad funcione desde Visual Studio 2015, desde una plantilla basada en plantillas de ASP.NET 5 Preview Templates -> Web Site
?
(Actualizaciones 1 a 4 eliminadas como son para betas históricas inútiles)
Actualización 5: en asp.net core 1.0.0-RC2 la herramienta dnx ha desaparecido, reemplazada por dotnet, pero el principio subyacente de que el comando dotnet ef
debe ejecutarse desde el directorio de origen de su proyecto, no desde el directorio de su solución, y para hacerlo por lo tanto, probablemente debería usar un indicador de comando externo o usar PowerShell Tools para Visual Studio, no el indicador de línea de comandos de nuget.
solution-dir project-source-dir
| |
d:/dev/AspNetCoreWebAp/src/AspNetCoreWebAp>dotnet ef
Project AspNetCoreWebAp (.NETCoreApp,Version=v1.0) will be compiled because expected outputs are missing
Compiling AspNetCoreWebAp for .NETCoreApp,Version=v1.0
Compilation succeeded.
0 Warning(s)
0 Error(s)
Time elapsed 00:00:03.0846647
_//__
---==/ //
___ ___ |. /|/
| __|| __| | ) ///
| _| | _| /_/ | //|//
|___||_| / //////
Entity Framework .NET Core CLI Commands 1.0.0-preview1-20901
Usage: dotnet ef [options] [command]
Te has perdido un paso. De la documentation en el momento en que su versión beta 8 estaba activa, el comando faltante habría sido:
Install-Package EntityFramework.Commands -Pre
para hacer que los comandos de migración estén disponibles en su proyecto.
Los Commands
se movieron a un paquete separado, probablemente para hacer que el marco principal sea más liviano para la producción, donde no se puede usar y no se necesitan utilidades de línea de comandos.
Respuesta-Actualización-contribuido por Warren: En Asp.net core 1.0.0-RC2, el paquete relevante se llama Microsoft.EntityFrameworkCore.Tools
y parece ser parte de la plantilla de la aplicación Web Core de ASP.Net que hace que el problema original sea altamente Es poco probable que ocurra a menos que alguien dañe realmente su proyecto. Los comandos de migración "EF" de la línea de comandos no deben ejecutarse desde la Consola del Administrador de Paquetes, que NO es un entorno general para los comandos DOTNET.