Я только что столкнулся с той же проблемой и использовал следующее решение (все из консоли диспетчера пакетов)
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
EDIT: (любезно предоставлено Kevin McPheat) Помните, что при переименовании файлов Configuration.cs также переименовывайте имена классов и конструкторов /EDIT.
С этой структурой вы можете просто сделать
PM> Add-Migration -ConfigurationTypeName ConfigA
PM> Add-Migration -ConfigurationTypeName ConfigB
Что создаст файлы кода для миграции внутри папки рядом с файлами конфигурации (хорошо хранить эти файлы вместе)
PM> Update-Database -ConfigurationTypeName ConfigA
PM> Update-Database -ConfigurationTypeName ConfigB
И последнее, но не менее важное: эти две команды будут применять правильные миграции к соответствующим базам данных.
EDIT 08 Feb, 2016: я провел небольшое тестирование с EF7 версии 7.0.0-rc1-16348.
Я не смог заставить работать опцию -o|--outputDir. Он продолжал давать Microsoft.Dnx.Runtime.Common.Commandline.CommandParsingException: Unrecognized command or argument
Однако похоже, что при первом добавлении миграции она добавляется в папку «Миграции», а последующая миграция для другого контекста автоматически помещается в подпапку миграций.
Первоначальные имена 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"
и сгенерированные файлы помещаются в правильные папки.
person
bart s
schedule
07.10.2015