5

동기화 할 때 DB를 동기화하지 않을 때 마이그레이션을 생성하는 데있어 기본적인 문제가 있습니다 (최대 마이그레이션까지, 실제로는 DB가 없음). 이미 내 모델을 크게 변경했습니다.보류중인 명시 적 마이그레이션이있는 동안 Add-Migration

이 특정 세부 사항은 다음과 같습니다

  1. 명시 적 마이그레이션의 순서를 가지고.
  2. 데이터베이스가 없습니다. 즉, 보류중인 변경 사항이 많습니다.
  3. 모델/컨텍스트를 변경했습니다.
  4. Add-Migration을 시도 할 때 명시 적 마이그레이션이 보류 중임을 정확하게 묻는 메시지가 표시됩니다..
  5. Update-Database 또는 migrate.exe를 통해 마이그레이션을 실행하고 (내 DB를 동기화하려고 시도하는 경우) 명시 적 마이그레이션을 성공적으로 적용한 후에 실패합니다 (). 자동 마이그레이션은 사용할 수 없습니다.
  6. 내가 자동 마이그레이션을 하나 (약속 할 스키마 변경을 방지하고 코드에서 행방 불명 이동합니다.)

을 나는 실현하는 # 5 내가 할 수있는 실패 후 지금은 사용하지 않으 # 4를 실행하십시오. 그런 다음 # 5와 voil을 다시 시도하십시오.

내 질문은 이것이 바보 같은 상황을 해결하기위한 예상 된 접근 방법일까요?

+0

현재 어떤 DB가 없다면, 당신은 단지 마이그레이션 폴더를 삭제하고'dbCtx.Database.Delete()를 호출 할 수 있습니다'당신의 모델에서 신선한 모든 일을 시작합니다. – SimpleVar

+0

데이터베이스없이 여러 마이그레이션을 어떻게 얻었습니까? – Dismissile

+0

@Dismissile : 우리는 _N_ devs 팀이고 우리 중 일부는 최신 마이그레이션 뒤에있는 로컬 DB를 가지고 있습니다. 위에서 설명한 것처럼 개발자는 최신 코드를 가져오고 마이그레이션을 보류하지 않고 모델을 변경하기 시작합니다. 그것은 전형적인 시나리오입니다. 개발자가 프로젝트에서 일조차 해본 적이 없으며 이제는 처음으로 모든 코드를 가져 오는 경우도 있습니다. – fernandoespinosa

답변

10

다음 접근 방식을 사용합니다.

먼저 마이그레이션을 적용하고 마지막 마이그레이션을 지정해야합니다.

PM> Update-Database -TargetMigration AnyMigrationName 

# It updates database to a migration named "AnyMigrationName" 
# This will apply migrations if the target hasn't been applied or roll back migrations 
# if it has 

로컬 데이터베이스가 업데이트되면 당신은 단순히 새로운 마이그레이션을 추가 할 수 있습니다.

PM> Add-Migration NewMigrationName 

# it scaffolds a new migration named "NewMigrationName" 

좋은 참고 찾고 난 당신에게 많은 도움이 될 수 있습니다 EF Migrations에 대한이 블로그 게시물을 발견했다. 그들은 많은 질문을 다루며 특별히 EF Migrations and a Merge ConflictEF Migrations Command Reference입니다.

+1

말이 되네 ... 고마워! – fernandoespinosa

+0

이 작품은 나를 위해. 덕분에 – CB4

+1

같은 문제가 있었는데, 내 새 마이 그 레이션 소스 제어에 추가되지 않았다 밝혀졌다. 멍청한 실수 – Jeroen

0

많은 마이그레이션이 보류중인 경우이 오류가 표시됩니다.

기존 마이그레이션이 필요하지 않으면 먼저 마이그레이션 폴더에서 마이그레이션을 모두 삭제 (제외) 한 다음 새 마이그레이션을 추가하십시오.

Add-Migration new