다음을 통해 공유


팀 환경의 마이그레이션

팀 환경에서 마이그레이션을 사용하는 경우 여러 개발자가 동시에 마이그레이션을 추가할 때 다양한 문제가 발생할 수 있습니다. 마이그레이션은 단순히 SQL 스크립트가 아니라 해당 마이그레이션 시 모델의 스냅샷을 포함합니다.

예를 들어 개발자 A와 B가 동시에 작업 분기를 만들고 분기에서 마이그레이션을 생성한다고 상상해 보십시오. 개발자 A가 분기를 병합한 다음 개발자 B가 동일한 작업을 수행하는 경우 최신 마이그레이션(개발자 B)에는 개발자 A의 마이그레이션 변경 내용이 포함되지 않은 컨텍스트 스냅샷이 있습니다. 이로 인해 이후 마이그레이션에서 다양한 형태의 손상이 발생할 수 있습니다.

따라서 미리 조정하고 가능한 경우 여러 분기의 마이그레이션에서 동시에 작업하지 않도록 하는 것이 좋습니다.

분기된 마이그레이션 트리를 탐지하기

메모

이 기능은 미리 보기-3부터 EF Core 11에 도입되고 있습니다.

EF 11부터 모델 스냅샷은 최신 마이그레이션의 ID를 기록합니다. 즉, 두 개발자가 각각 별도의 분기에서 마이그레이션을 만드는 경우 해당 분기를 병합하면 두 분기가 최신 마이그레이션 ID를 수정하므로 모델 스냅샷 파일에서 소스 제어 충돌이 발생합니다. 이 충돌은 중요한 신호입니다. 이는 마이그레이션 트리가 갈라졌음을 알려주며, 계속 진행하기 전에 그 중 하나를 버려야 합니다.

이 문제를 해결하려면 아래의 분기된 마이그레이션 트리 해결 단계를 수행합니다. 병합을 중단하고, 마이그레이션을 제거하고(모델 변경 내용 유지), 팀 동료의 변경 내용을 병합한 다음, 마이그레이션을 다시 추가합니다.

분기된 마이그레이션 트리 해결

분기를 병합할 때 분기에서 분기된 마이그레이션 트리가 감지되면, 마이그레이션을 다시 생성하여 해결하십시오. 아래 단계를 수행하세요.

  1. 병합을 중단하고 병합 전에 작업 디렉터리로 롤백
  2. 마이그레이션 제거(하지만 모델 변경 내용 유지)
  3. 팀 동료의 변경 내용을 작업 디렉터리에 병합
  4. 마이그레이션 다시 추가

이 작업을 수행한 후 마이그레이션은 다른 분기에 추가된 모든 마이그레이션을 기반으로 하며 해당 컨텍스트 스냅샷에는 이전의 모든 변경 내용이 포함됩니다. 이제 마이그레이션을 나머지 팀과 안전하게 공유할 수 있습니다.