Acabei de encontrar o mesmo problema e usei a seguinte solução (todas do Package Manager Console)
PM> Enable-Migrations -MigrationsDirectory "Migrations\ContextA" -ContextTypeName MyProject.Models.ContextA
PM> Enable-Migrations -MigrationsDirectory "Migrations\ContextB" -ContextTypeName MyProject.Models.ContextB
Isso criará 2 pastas separadas na pasta Migrações. Cada um conterá o Configuration.cs
arquivo gerado . Infelizmente, você ainda precisa renomear esses Configuration.cs
arquivos, caso contrário, haverá reclamações sobre a existência de dois deles. Renomeei meus arquivos para ConfigA.cs
eConfigB.cs
EDIT : (cortesia de Kevin McPheat) Lembre-se de renomear os arquivos Configuration.cs, renomeie também os nomes de classe e os construtores / EDIT
Com essa estrutura você pode simplesmente fazer
PM> Add-Migration -ConfigurationTypeName ConfigA
PM> Add-Migration -ConfigurationTypeName ConfigB
O que criará os arquivos de código para a migração dentro da pasta ao lado dos arquivos de configuração (é bom manter esses arquivos juntos)
PM> Update-Database -ConfigurationTypeName ConfigA
PM> Update-Database -ConfigurationTypeName ConfigB
E por último, mas não menos importante, esses dois comandos aplicarão as migrações corretas aos bancos de dados correspondentes.
EDIT 08 Fev 2016:
Fiz um pequeno teste com o EF7 versão 7.0.0-rc1-16348
Não foi possível obter a opção -o | --outputDir para funcionar. Continuou dandoMicrosoft.Dnx.Runtime.Common.Commandline.CommandParsingException: Unrecognized command or argument
No entanto, parece que na primeira vez em que uma migração é adicionada, ela é adicionada à pasta Migrações e uma migração subsequente para outro contexto é automaticamente colocada em uma subpasta de migrações.
Os nomes originais ContextA
parecem violar algumas convenções de nomenclatura, então agora eu uso o ContextAContext
e ContextBContext
. Usando esses nomes, você pode usar os seguintes comandos: (observe que meu dnx ainda funciona no console do gerenciador de pacotes e não gosto de abrir uma janela CMD separada para fazer migrações)
PM> dnx ef migrations add Initial -c "ContextAContext"
PM> dnx ef migrations add Initial -c "ContextBContext"
Isso criará um instantâneo do modelo e uma migração inicial na Migrations
pasta para ContextAContext
. Ele criará uma pasta chamada ContextB
contendo esses arquivos paraContextBContext
Adicionei manualmente uma ContextA
pasta e movi os arquivos de migração ContextAContext
para essa pasta. Renomeei o nome do namespace dentro desses arquivos (arquivo de instantâneo, migração inicial e observe que há um terceiro arquivo no arquivo de migração inicial ... designer.cs). Eu tive que adicionar .ContextA
ao espaço para nome e a partir daí a estrutura lida com ele automaticamente novamente.
O uso dos seguintes comandos criaria uma nova migração para cada contexto
PM> dnx ef migrations add Update1 -c "ContextAContext"
PM> dnx ef migrations add Update1 -c "ContextBContext"
e os arquivos gerados são colocados nas pastas corretas.