방금 같은 문제에 부딪 혔고 다음 솔루션을 사용했습니다 (모두 패키지 관리자 콘솔에서)
PM> Enable-Migrations -MigrationsDirectory "Migrations\ContextA" -ContextTypeName MyProject.Models.ContextA
PM> Enable-Migrations -MigrationsDirectory "Migrations\ContextB" -ContextTypeName MyProject.Models.ContextB
마이그레이션 폴더에 2 개의 별도 폴더가 생성됩니다. 각각은 생성 된 Configuration.cs
파일 을 포함 합니다. 불행히도 여전히 해당 Configuration.cs
파일의 이름을 변경해야 합니다. 그렇지 않으면 두 파일이 있다는 불만이 있습니다. 내 파일 이름을 ConfigA.cs
andConfigB.cs
편집 : (제공 : 케빈 McPheat)을 Configuration.cs 파일 이름을 바꿀 때 또한 클래스 이름과 생성자의 이름을 변경, 기억 / EDIT를
이 구조로 간단하게 할 수 있습니다
PM> Add-Migration -ConfigurationTypeName ConfigA
PM> Add-Migration -ConfigurationTypeName ConfigB
그러면 구성 파일 옆의 폴더 내에 마이그레이션을위한 코드 파일이 생성됩니다 (이러한 파일을 함께 보관하는 것이 좋습니다).
PM> Update-Database -ConfigurationTypeName ConfigA
PM> Update-Database -ConfigurationTypeName ConfigB
마지막으로이 두 명령은 해당 데이터베이스에 올바른 마이그레이션을 적용합니다.
2016 년 2 월 8 일 편집 :
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"
생성 된 파일은 올바른 폴더에 저장됩니다.