을 사용하여 최근에 만든 데이터베이스의 로컬 인스턴스가 있으므로 테이블에 코드가 일치하는 InitalCreate
항목이 있습니다.EF4.3 코드 첫 번째 마이그레이션에서 보류중인 마이그레이션을 무시합니다.
그러나 일부 코드 기반 마이그레이션은 마이그레이션 폴더에 있습니다. 이는 개발 및 스테이징 환경에서 실행되어 해당 데이터베이스를 코드와 일치하게 만듭니다. 그러나 현재 코드를 사용하여 데이터베이스를 만들었으므로 로컬로 적용 할 필요가 없습니다.
이제 모델을 변경하고 해당하는 마이그레이션을 만들어야합니다. 내가 Add-Migration TestMigration
을 실행할 때, 나는 다음과 같은 오류 나는이 경우 어떻게해야
Unable to generate an explicit migration because the following explicit
migrations are pending:
[201203271113060_AddTableX,
201203290856574_AlterColumnY]
Apply the pending explicit migrations before attempting to generate
a new explicit migration.
거야? 다른 버전의 환경에서 Add-Migration 도구를 가리킬 수 없습니다. 버전이 로컬에있는 것과 일치한다는 보장이 없기 때문입니다. 내가 만든 변경 사항과 만 일치하는 마이그레이션을 원합니다.
내가 몇 가지 옵션이 보이지만 아무도 이상적인 없습니다 :
- 다음 이전 마이그레이션을 복원, 추가 마이그레이션 명령을 실행 마이그레이션 폴더에서 다른 마이그레이션을 삭제하여 데이터베이스를 업그레이드합니다. 이것은 간단하지만 약간 hackish 보인다.
- 첫 번째 마이그레이션이 적용된 소스 컨트롤의 모델 버전으로 되돌리고 빌드 한 다음 데이터베이스를 만드는 데 사용하십시오. 그런 다음 최신 버전을 구해서 모든 마이그레이션을 적용한 다음 마이그레이션을 추가 할 준비가되었습니다. 이것은 많은 노력처럼 보인다!
- 수동으로 마이그레이션을 만듭니다.
누구에게 관리하는 방법에 대한 제안 사항이 있습니까? 우리는 귀하의 옵션 # 1의 변형을 사용할 계획
'DbContext.Database.Create()'를 사용하여 생성 된 데이터베이스에서 이전 마이그레이션 작업을 실행할 수 없기 때문에이 작업이 수행되지 않습니다. 컬럼을 추가하는 마이그레이션을 상상해보십시오. 그러나 새 로컬 데이터베이스에서 이미 그 컬럼을 가지고 있기 때문에'SqlException'을 얻을 수 있고 관련 행은 절대로'__MigrationHistory' 테이블에 추가되지 않습니다. 올바른 접근이라고 생각하는 것에 대한 제 대답을보십시오. –