2017-02-12 6 views
1

최근 DotNet Core 1.0.0에서 버전 1.1.0으로 EF7 프로젝트를 마이그레이션했는데 이제는 데이터베이스 마이그레이션을 만드는 데 어려움이 있습니다.EF7 마이그레이션 생성기가 컨텍스트 매개 변수를 무시합니다.

내 프로젝트에서 다중 컨텍스트가있는 도구 인 dotnet-ef는 각 컨텍스트에 대해 별도의 마이그레이션을 만들기 위해이 컨텍스트 사이의 고유 한 명령 줄 매개 변수를 제공합니다.

내가 나를

이름 '초기'는 기존의 이동에 의해 사용됩니다에게 말하는 실패

dotnet ef migrations add Initial --context 'Some.Namespace.AuditLogContext' --output-dir './Migrations/AuditLogMigrations' 

다음 명령을 사용하여 컨텍스트 "AuditLogContext"에 대한 마이그레이션을 만들려고

. 나는 다른 이름으로 마이그레이션을 만들려고 할 때

Initial2는 마이그레이션이되지만 잘못된 컨텍스트 생성받을 말한다.

폴더에서

에게

./Migrations/AuditLogMigrations

라는 이름의 새 파일입니다

20170212122451_Initial2.cs

20170212122451_Initial2.Designer.cs

,

CoreContextModelSnapshot.cs

나는 파일을 AuditLogContextModelSnapshot.cs 대신을 기대합니다.

아무도이 문제를 해결하지 못했습니까?

답변

0

이 문제의 원인을 발견했습니다.

내 프로젝트에는 여러 컨텍스트가 있으며 모든 컨텍스트에는 매개 변수가 필요합니다. 따라서 마이그레이션 빌더는 모든 컨텍스트에 대한 팩토리를 기대합니다.

필자의 경우 하나의 클래스는 모든 팩토리를 구현하지만, 인터페이스의 구체적인 순서를 사용하여 어떤 마이그레이션이 만들어지는지를 결정하는 버그가있다.

public class Program : IDbContextFactory<CoreContext>, IDbContextFactory<AuditLogContext>, IDbContextFactory<LockContext> 

이 조각은 CoreContext

public class Program : IDbContextFactory<AuditLogContext>, IDbContextFactory<CoreContext>,IDbContextFactory<LockContext> 

에 대한 마이그레이션을 만들 것이며, 조각은 AuditLogContext에 대한 마이그레이션을 만들 것입니다.

약간 짜증나지만 마이그레이션을 만드는 방법을 알고 있다면 괜찮습니다.