visual studio 2010 - net - Uso de la consola de NuGet Package Manager fuera de Visual Studio para ejecutar las migraciones de Entity Framework
entity framework asp net (5)
A partir de hoy, puede usar el comando dotnet ef
para usar todo el primer código de migración de comando
Ejemplo:
Update-Database
->
dotnet ef database update
Add-Migration AddProductReviews
->
dotnet ef migrations add AddProductReviews
Remove-Migration
->
dotnet ef migrations remove
¿Hay NuGet abrir la consola de NuGet Package Manager fuera de Visual Studio?
Mi objetivo es ejecutar algunas migraciones, que creé usando EntityFramework.Migrations
Básicamente, quiero ejecutar Update-Database –Verbose
command en un entorno que no tiene Visual Studio, pero tiene PowerShell 2.0 y la herramienta de línea de comandos NuGet.
Aquí hay una función de PowerShell que hace el equivalente de update-database
en la consola de Package Manager, desde una ventana normal de PowerShell, utilizando EF xxx
Lo estoy usando desde la línea de comandos como parte de un proceso de ''compilación completa'' en mi máquina dev;
function Update-Database($solutionDir, $projectBinDir, $assemblyName, $appConfigFile)
{
$efMigrateExe = "$solutionDir/packages/EntityFramework.*/tools/migrate.exe"
Write-Host "Updating Entity Framework Database"
Write-Host " Migrate.exe at $efMigrateExe"
Write-Host " EF project binary at $projectBinDir"
Write-Host " EF config at $appConfigFile"
. "$efMigrateExe" "$assemblyName" /startupConfigurationFile="$appConfigFile" /startupDirectory="$projectBinDir"
}
Los parámetros son;
$solutionDir
- el directorio donde vive su solución; El padre de la carpeta de packages
. $projectBinDir
: el directorio <something>/bin/debug
contiene el ensamblaje con su DbContext
. $assemblyName
: el nombre del archivo de ensamblaje, como MyEfProject.dll
appConfigFile
: el nombre del archivo app.config
o web.config
que contiene cadenas de conexión, etc. Equivalente a usar -StartupProjectName
en la consola de Package Manager.
El enlace para la información migrate.exe está desactualizado. Ya que este post me ayudó aquí es lo último para otras personas que se topan con esto:
http://msdn.microsoft.com/en-us/data/jj618307.aspx
Resumen : el artículo le da instrucciones sobre cómo instalar migrate.exe y cómo usar los argumentos de la línea de comandos para realizar su escenario de migración con él. Además, se identifican problemas comunes. En primer lugar, instale EF con nuget y busque la carpeta de herramientas del paquete para encontrar el archivo exe.
La respuesta original publicada era correcta en ese momento, pero ahora (a partir del 4.3) hay un migrate.exe, por lo que no necesita nuget o powershell:
packages/EntityFramework.4.3.1/tools/migrate.exe
Consulte http://blogs.msdn.com/b/adonet/archive/2012/02/09/ef-4-3-released.aspx
Si echas un vistazo a Nuget Faq dice lo siguiente:
¿Puedo usar NuGet fuera de Visual Studio?
¡Seguro que puedes! Como se discutió en la pregunta sobre herramientas de línea de comandos para NuGet, el enfoque principal de NuGet es Visual Studio, pero la API principal de NuGet no tiene dependencias en Visual Studio. Hay varios clientes de NuGet que funcionan completamente fuera de Visual Studio:
SharpDevelop Alpha. (Vea una demostración de esto en la charla de Phil Haack en MvcConf).
Páginas web ASP.NET en WebMatrix. (Vea una demostración de esto en la charla de Phil Haack.)
NuGet.exe
Pero para usar el código de las primeras migraciones fuera de Visual Studio, las notas de la versión dicen lo siguiente:
Sin experiencia fuera de Visual-Studio. Alpha 2 solo incluye la experiencia integrada de Visual Studio. También planeamos entregar una herramienta de línea de comandos y un proveedor de MSDeploy para Migraciones de Code First.