2014-09-22 2 views
1

우리는 우리가 ORM로 엔티티 프레임 워크를 개조 일부 기존 응용 프로그램을 가지고있다.마이그레이션 기존 데이터베이스와 빈 개발 모두 데이터베이스와 엔티티 프레임 워크를 사용하여

목표는 마이그레이션에 (기존의 데이터베이스에서) 첫 번째 코드를 사용하는 것입니다,하지만 우리는 문제가 기존 데이터베이스 시나리오에 맞게 마이그레이션을 얻는 데 :

  • 테스트/자극 데이터베이스 이미 모든 테이블이 그 코드와 일치합니다. 그래도 마이그레이션 할 수 없습니다.
  • 비어있는 로컬 호스트 개발 데이터베이스입니다.

목표

  1. 개발자는 단위 테스트 프로젝트를 실행할 수 있으며, 데이터베이스의 모든 테이블과 함께 자체를 생성합니다.
  2. __migrationsHistory 테이블을 생성 돌봐 년 이후 생산에 필요한 모든 변경됩니다 마이그레이션에서 스크립트를 생성 할 수있을 것입니다.

패키지 관리자를 사용하여 기본 마이그레이션 초기화에 1을 해결할 수있다. 또는 ignore-changes 스위치를 사용하여 2를 해결하십시오. 그러나 동시에 둘 다 성공하는 데 성공하지 못했습니다.

나는 시도했다 :

  • 추가 마이그레이션 InitialCreate; 마이그레이션 추가 MigrationHistoryTable - 무시 - 변경;
    개발자가 할 수있는 아이디어 : 갱신 데이터베이스
    를 스크립트가 갱신 데이터베이스 -Script -SourceMigration을 사용하여 생성 될 수있는 시험/자극에 갈 때 : $ InitialDatabase. 문제는 스크립트가 initialCreate가 누락 된 것으로 마이그레이션하여 기존 테이블을 다시 추가하려고 시도한다는 것입니다. MigrationHistoryTable의 소스 마이그레이션은 누락 된 경우 마이그레이션 기록 테이블을 추가하지 않습니다 (테스트/prod에 있음).
  • 또 다른 시도
  • 두 마이그레이션 프로젝트, 단위 테스트 및 다른 데이터베이스를 가지고 있었다. 그러나 이것은 조금 더러워졌다.

다른 제안?

들으 김

답변

1

당신은 당신이 첫 번째 코드로 데이터베이스를 기존의 리버스 엔지니어링 엔티티 프레임 워크 전동 공구 extensions를 사용할 수 있습니다. 어떤 데이터베이스와 개발 컴퓨터에

add-migration Initial 

update-database 

을하고 당신은 모델과 일치하는 생산을해야합니다. __MigrationHistory 테이블과 모든 행을 스크립트로 만들고 프로덕션 데이터베이스에 추가하십시오. 그런 다음 프로덕션 데이터베이스는 마이그레이션에서 생성 된 이후 스크립트에 대한 준비가됩니다.

명령

update-database -script -SourceMigration $InitialDatabase 

최신 버전으로 데이터베이스를 업데이트하기위한 전체 스크립트를 생성합니다. __MigrationHistory 테이블을 확인하고 스키마 변경 사항을 행별로 적용하여 모델을 각 마이그레이션의 변경 사항과 비교합니다.

+0

안녕하세요, 저는 수동 스크립팅 (또는 DB에서 자동 생성)없이 EF가 이러한 상황을 지원할 수있는 솔루션을 찾고 있습니다. 더 나은 제안이 없다면 이것을 해결책으로 표시 할 것입니다. Thy Kim –

+0

Entity Framework 마이그레이션 기능은 모두 해당 __MigrationHistory 테이블에 연결됩니다. 데이터베이스를 리버스 엔지니어링하고 로컬에서 Entity Framework 마이그레이션을 사용한 다음 [SQL Server 데이터 도구] (http://www.microsoft.com/en-us/download/details)의 스키마 비교 도구를 사용할 수도 있습니다. aspx? id = 36843) 또는 __MigrationHistory 테이블이 프로덕션 환경에있는 것을 일단 이해하지 못하면 프로덕션을 가리 키도록 연결 문자열을 변경하고 업데이트 데이터베이스를 수행 할 수 있습니다. –

+0

안녕하세요, Miniver, 첫 번째 제안 된 솔루션이 우리와 함께 갈 것 같습니다. Thx –