2016-06-14 3 views
0

EF 코드를 먼저 사용하여 데이터베이스를 만들고 응용 프로그램이 프로덕션 및 테스트 중이므로 마이그레이션을 실행하여 모델 변경시 데이터베이스를 업데이트해야합니다.엔티티 프레임 워크 코드를 다른 데이터베이스에서 첫 번째 마이 그 레이션 실행

표준 지침에 따라 마이그레이션을 설정 했으므로 dev 데이터베이스 1에 대해 정상적으로 작동합니다. 또한 두 번째 데이터베이스가 현재 코드 기반으로 가져오고 싶지만이 두 번째 데이터베이스는 알 수없는 상태입니다.

내가 알고 싶은 것은 다른 데이터베이스에 대해 마이그레이션 클래스를 생성 할 수 있고 어떻게 할 수 있습니까? 마이 그 레이션을 설정할 때 지정한 원본 데이터베이스 이외의 것에 대해 마이 그 레이션 클래스를 생성 할 수 없습니다. app.config에서 DB 이름을 변경했지만 마이그레이션을 수행 할 때 원래 데이터베이스를 여전히 봅니다.

마이그레이션 스크립트를 생성 할 데이터베이스를 명시 적으로 지정할 수 있습니까?

답변

0

마이그레이션은 마이그레이션이 적용되었는지 (__MigrationHistory) 적용되었는지를 확인하는 것 이외의 데이터베이스를 보지 않습니다. 마이그레이션을 설정하면 코드 모델의 스냅 샷이 생성되어 앞으로 사용할 때이를 사용합니다. 따라서 마이그레이션 제어하에 알 수없는 상태의 데이터베이스를 가져 오려면 코드 모델과 일치하도록 데이터베이스를 가져와야합니다.

다음과 비슷한 작업을 수행 할 수 있습니다. 현재 데이터베이스 (update-database -Script –SourceMigration $InitialDatabase)에서 idempotent script을 만듭니다. 이것은 데이터베이스를 생성하고 가져 오는 데 필요한 모든 마이그레이션과 동일합니다. 이러한 개체 중 일부가있는 기존 데이터베이스가 있으므로 이미 존재하는 항목의 코드를 제거하여 스크립트를 수동으로 조정해야합니다. 적용을 받으면 채워진 __MigrationHistory 테이블로 모델과 일치하는 데이터베이스를 가져야합니다.

다른 옵션은 schema compare utility을 사용하여 데이터베이스를 일치시킨 다음 __MigrationHistory 테이블을 복사하는 것입니다.

Migrations Under the Hood.

관련 문제