Я только что столкнулся с той же проблемой и использовал следующее решение (все из консоли диспетчера пакетов)
PM> Enable-Migrations -MigrationsDirectory "Migrations\ContextA" -ContextTypeName MyProject.Models.ContextA
PM> Enable-Migrations -MigrationsDirectory "Migrations\ContextB" -ContextTypeName MyProject.Models.ContextB
Это создаст 2 отдельные папки в папке Migrations. Каждый будет содержать сгенерированный Configuration.cs
файл. К сожалению, вам все равно придется переименовывать эти Configuration.cs
файлы, иначе будут жалобы на наличие двух из них. Я переименовал свои файлы в ConfigA.cs
иConfigB.cs
РЕДАКТИРОВАТЬ : (любезно предоставлено Кевином Макфитом) Помните, что при переименовании файлов Configuration.cs также переименовывайте имена классов и конструкторы / РЕДАКТИРОВАТЬ
С этой структурой вы можете просто сделать
PM> Add-Migration -ConfigurationTypeName ConfigA
PM> Add-Migration -ConfigurationTypeName ConfigB
Это создаст файлы кода для миграции внутри папки рядом с файлами конфигурации (приятно хранить эти файлы вместе)
PM> Update-Database -ConfigurationTypeName ConfigA
PM> Update-Database -ConfigurationTypeName ConfigB
И последнее, но не менее важное, эти две команды будут применять правильные миграции к своим соответствующим базам данных.
РЕДАКТИРОВАТЬ 08 февраля 2016:
Я провел небольшое тестирование с EF7 версии 7.0.0-rc1-16348.
Мне не удалось заставить работать параметр -o | --outputDir. Он продолжал даватьMicrosoft.Dnx.Runtime.Common.Commandline.CommandParsingException: Unrecognized command or argument
Однако похоже, что при первом добавлении миграции она добавляется в папку Migrations, а последующая миграция для другого контекста автоматически помещается в подкаталог миграций.
Исходные имена, ContextA
похоже, нарушают некоторые соглашения об именах, поэтому теперь я использую ContextAContext
и ContextBContext
. Используя эти имена, вы можете использовать следующие команды: (обратите внимание, что мой dnx по-прежнему работает из консоли диспетчера пакетов, и я не люблю открывать отдельное окно CMD для выполнения миграции)
PM> dnx ef migrations add Initial -c "ContextAContext"
PM> dnx ef migrations add Initial -c "ContextBContext"
Это создаст снимок модели и начальную миграцию в Migrations
папке для ContextAContext
. Он создаст папку с именем, ContextB
содержащую эти файлы дляContextBContext
Я вручную добавил ContextA
папку и переместил файлы миграции ContextAContext
в эту папку. Затем я переименовал пространство имен в этих файлах (файл моментального снимка, первоначальная миграция и заметил, что есть третий файл в исходном файле миграции ... designer.cs). Мне пришлось добавить .ContextA
в пространство имен, и оттуда фреймворк снова обработает это автоматически.
Использование следующих команд создаст новую миграцию для каждого контекста
PM> dnx ef migrations add Update1 -c "ContextAContext"
PM> dnx ef migrations add Update1 -c "ContextBContext"
и сгенерированные файлы помещаются в правильные папки.