팀 환경의 마이그레이션

팀 환경에서 마이그레이션 작업을 수행할 때에는 모델 스냅샷 파일에 특히 주의하세요. 이 파일은 팀원의 마이그레이션이 사용자의 마이그레이션과 완전히 병합되었는지 또는 마이그레이션을 공유하기 전에 다시 만들어 충돌을 해결해야 하는지 알려줍니다.

병합

팀원의 마이그레이션을 병합하면 모델 스냅샷 파일에서 충돌이 발생할 수 있습니다. 두 변경 내용이 모두 관련이 없는 경우 병합은 간단하며 두 마이그레이션이 동시에 존재할 수 있습니다. 예를 들어 고객 엔터티 형식 구성에서 다음과 같은 병합 충돌이 발생할 수 있습니다.

<<<<<<< Mine
b.Property<bool>("Deactivated");
=======
b.Property<int>("LoyaltyPoints");
>>>>>>> Theirs

이러한 속성은 모두 최종 모델에 있어야 하므로 두 속성을 모두 추가하여 병합을 완료합니다. 대부분의 경우 버전 제어 시스템에서 이러한 변경 내용을 자동으로 병합할 수 있습니다.

b.Property<bool>("Deactivated");
b.Property<int>("LoyaltyPoints");

이러한 경우 사용자의 마이그레이션과 팀원의 마이그레이션은 서로 독립적입니다. 둘 중 하나를 먼저 적용할 수 있으므로 팀과 공유하기 전에 마이그레이션을 추가로 변경할 필요가 없습니다.

충돌 해결

모델 스냅샷 모델을 병합할 때 실제 충돌이 발생하는 경우가 있습니다. 예를 들어 사용자와 팀원이 각각 동일한 속성의 이름을 바꿨을 수 있습니다.

<<<<<<< Mine
b.Property<string>("Username");
=======
b.Property<string>("Alias");
>>>>>>> Theirs

이러한 종류의 충돌이 발생하면 마이그레이션을 다시 만들어서 해결합니다. 다음 단계를 수행하세요.

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

이렇게 수행하면 두 마이그레이션을 올바른 순서로 적용할 수 있습니다. 해당 마이그레이션이 먼저 적용되고 열 이름이 별칭으로 변경된 후 마이그레이션에서 이름이 사용자 이름으로 바뀝니다.

마이그레이션은 나머지 팀원과 안전하게 공유될 수 있습니다.