2

내가 잘못하고있을 수 있습니다. 그런 경우 올바른 방향으로 안내해주세요.다른 데이터베이스를 런타임에 마이그레이션

나는 런타임에 사용할 연결 문자열을 입력하고 다른 데이터베이스 (잠재적으로 각기 다른 버전의 데이터베이스)를 업데이트 할 수있는 마이그레이션 응용 프로그램을 코딩하고 있습니다.

나를위한 문제는 Add-Migration 명령이 패키지 관리자 콘솔을 통해서만 실행되며 내 app.config 아래에 연결 문자열이 설정되어 있지 않기 때문에 Entity Migration이 어떻게 가능합니까? 내 데이터베이스의 버전을 알고 계십니까?

특정 연결 문자열 (데이터베이스와 테이블을 올바르게 만들었습니다)에 대한 초기 마이그레이션을 실행 한 후이 문제가 발생했지만 이후에 두 번째 마이그레이션 파일을 추가하려고하면 오류가 발생했습니다. 다른 마이그레이션이 보류 중입니다.

아마도 Entity Migration은 패키지 관리자 콘솔이나 동적 연결 문자열에서 실행되지 않을 수도 있지만, 내가하고있는 일을 확실히해야합니다.

+0

예이 작업을 수행 할 수 있습니다. http://stackoverflow.com/a/16133150/1347784 –

답변

2

이미 준비된 응용 프로그램이 있습니다. migrate.exe에 대한 정보를 찾아보십시오 : http://msdn.microsoft.com/en-us/data/jj618307.aspx.

그리고 귀하의 질문에 대해 - ef는 어떤 마이그레이션 데이터베이스가 매우 단순한지를 인식합니다. 데이터베이스 내의 해당 __MigrationHistory 테이블을 사용합니다. 여기에는 MigrationId에 의해 이미 마이그레이션이 적용된 정보가 있습니다. 주어진 마이그레이션 이전에 적용되어야하는 현재 데이터베이스 및 데이터베이스의 상태는 키 "대상"아래에서 마이그레이션의 resx 파일에 저장된 해시 값과 비교됩니다.

+0

요점은 패키지 관리자 콘솔을 통해 마이그레이션 파일을 추가하고 app.config 아래에 연결 문자열이 설정되어 있지 않다는 것입니다. Add-Migration 명령을 실행해도 응용 프로그램이 실행 중이 아니기 때문에 __MigrationHistory 테이블을 확인할 수 없습니다. 나는 아마 바퀴를 다시 발명 할 것이다. 제공된 링크를 확인하고 나중에 답변을 업데이트 할 것입니다. – MMalke

+0

add-migration 및 update-database 스크립트는 항상 일부 데이터베이스에 대해 실행됩니다. – mr100

+0

스크립트가 __MigrationHistory 테이블을 검사 할 수 있도록 응용 프로그램을 실행할 필요가 없습니다. – mr100

관련 문제