팀 환경의 마이그레이션
팀 환경에서 마이그레이션 작업을 수행할 때에는 모델 스냅샷 파일에 특히 주의하세요. 이 파일은 팀원의 마이그레이션이 사용자의 마이그레이션과 완전히 병합되었는지 또는 마이그레이션을 공유하기 전에 다시 만들어 충돌을 해결해야 하는지 알려줍니다.
병합
팀원의 마이그레이션을 병합하면 모델 스냅샷 파일에서 충돌이 발생할 수 있습니다. 두 변경 내용이 모두 관련이 없는 경우 병합은 간단하며 두 마이그레이션이 동시에 존재할 수 있습니다. 예를 들어 고객 엔터티 형식 구성에서 다음과 같은 병합 충돌이 발생할 수 있습니다.
<<<<<<< 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
이러한 종류의 충돌이 발생하면 마이그레이션을 다시 만들어서 해결합니다. 다음 단계를 수행하세요.
- 병합을 중단하고 병합 전에 작업 디렉터리로 롤백
- 마이그레이션 제거(단, 모델 변경 내용 유지)
- 팀원의 변경 내용을 작업 디렉터리에 병합
- 마이그레이션 다시 추가
이렇게 수행하면 두 마이그레이션을 올바른 순서로 적용할 수 있습니다. 해당 마이그레이션이 먼저 적용되고 열 이름이 별칭으로 변경된 후 마이그레이션에서 이름이 사용자 이름으로 바뀝니다.
마이그레이션은 나머지 팀원과 안전하게 공유될 수 있습니다.
.NET