Me encontré con el mismo problema y utilicé la siguiente solución (todo desde la Consola del Administrador de paquetes)
PM> Enable-Migrations -MigrationsDirectory "Migrations\ContextA" -ContextTypeName MyProject.Models.ContextA
PM> Enable-Migrations -MigrationsDirectory "Migrations\ContextB" -ContextTypeName MyProject.Models.ContextB
Esto creará 2 carpetas separadas en la carpeta Migraciones. Cada uno contendrá el Configuration.cs
archivo generado . Desafortunadamente, aún debe cambiar el nombre de esos Configuration.cs
archivos, de lo contrario, habrá quejas por tener dos de ellos. Cambié el nombre de mis archivos a ConfigA.cs
yConfigB.cs
EDITAR : (cortesía de Kevin McPheat) Recuerde al cambiar el nombre de los archivos Configuration.cs, también cambie el nombre de los nombres de clase y los constructores / EDITAR
Con esta estructura puedes simplemente hacer
PM> Add-Migration -ConfigurationTypeName ConfigA
PM> Add-Migration -ConfigurationTypeName ConfigB
Que creará los archivos de código para la migración dentro de la carpeta junto a los archivos de configuración (esto es bueno para mantener esos archivos juntos)
PM> Update-Database -ConfigurationTypeName ConfigA
PM> Update-Database -ConfigurationTypeName ConfigB
Y por último, pero no menos importante, esos dos comandos aplicarán las migraciones correctas a sus bases de datos correspondientes.
EDITAR 08 de febrero de 2016:
He hecho algunas pruebas con EF7 versión 7.0.0-rc1-16348
No pude hacer funcionar la opción -o | --outputDir. Siguió dandoMicrosoft.Dnx.Runtime.Common.Commandline.CommandParsingException: Unrecognized command or argument
Sin embargo, parece que la primera vez que se agrega una migración, se agrega a la carpeta Migraciones, y una migración posterior para otro contexto se coloca automáticamente en una subcarpeta de migraciones.
Los nombres originales ContextA
parecen violar algunas convenciones de nomenclatura, por lo que ahora uso ContextAContext
y ContextBContext
. Usando estos nombres, podría usar los siguientes comandos: (tenga en cuenta que mi dnx todavía funciona desde la consola del administrador de paquetes y no me gusta abrir una ventana CMD separada para realizar migraciones)
PM> dnx ef migrations add Initial -c "ContextAContext"
PM> dnx ef migrations add Initial -c "ContextBContext"
Esto creará una instantánea del modelo y una migración inicial en la Migrations
carpeta para ContextAContext
. Creará una carpeta con el nombre que ContextB
contiene estos archivos paraContextBContext
Agregué manualmente una ContextA
carpeta y moví los archivos de migración ContextAContext
a esa carpeta. Luego cambié el nombre del espacio de nombres dentro de esos archivos (archivo de instantánea, migración inicial y tenga en cuenta que hay un tercer archivo debajo del archivo de migración inicial ... designer.cs). Tuve que agregar.ContextA
al espacio de nombres, y desde allí el marco lo maneja automáticamente nuevamente.
El uso de los siguientes comandos crearía una nueva migración para cada contexto
PM> dnx ef migrations add Update1 -c "ContextAContext"
PM> dnx ef migrations add Update1 -c "ContextBContext"
y los archivos generados se colocan en las carpetas correctas.