팀 개발환경에서 Migrations을 사용할 때, model snapshot file에 더 주의를 기울어야 한다. 이 파일은 동료가 migration merge를 깔끔하게 할지, conflict를 해결하기 위해 migration을 다시 만들어야 할지 말해준다.
Merging
동료의 것으로 부터 migrations을 merge할때, model snapshot file에 충돌이 날 수 있다. 양쪽 변경이 무관하면, 사소한 문제로 two migrations이 공존할 수 있다. 예를들어, customer entity type 구성에서 다음과 같은 merge conflict가 발생할 수 있다.
<<<<<<< Mine
b.Property<bool>("Deactivated");
=======
b.Property<int>("LoyaltyPoints");
>>>>>>> Theirs
두 properties 모두 최종 model에 포함되기 때문에, 다 추가하는 것으로 merge를 종결시킬 수 있다. 대부분, version control system은 이러한 변경을 자동으로 merge해준다.
b.Property<bool>("Deactivated");
b.Property<int>("LoyaltyPoints");
이러한 경우, 양쪽 migrations이 독립적이기 때문에, 어떤 것이든 먼저 적용될 수 있고, team에 공유하기 전에 migration을 추가적으로 수정할 필요가 없다.
Resolving conflicts
때때로, 진짜 충돌을 맞이하게 된다. 예를들면, 당신과 동료가 동일한 property의 이름을 변경했을 수 있다.
<<<<<<< Mine
b.Property<string>("Username");
=======
b.Property<string>("Alias");
>>>>>>> Theirs
이런 충돌의 경우, migration을 재생성하므로 해결할 수 있다. 다음의 단계를 따른다.
- merge를 되돌리고, working directory를 이전 merge 상태로 rollback한다.
- model changes는 그대로 유지한 채, migration을 삭제한다.
- 동료의 변경사항을 당신의 working directory로 merge한다.
- 당신의 migration을 재추가 한다.
이렇게 하면, 두 migrations이 정확한 순서로 적용된다. 컬럼명이 Alias로 바뀐다음, Username으로 바뀐다. 당신의 migration은 안전하게 동료들에게 공유될 수 있다.
'Entity Framework Core' 카테고리의 다른 글
.NET CLI] .NET 7, Entity Framework Core 오프라인 설치 (0) | 2023.07.21 |
---|---|
Entity Framework Core] Custom Migrations Operations (0) | 2023.07.20 |
Entity Framework Core] Migrations 반영 (0) | 2023.07.20 |
Entity Framework Core] Migrations 관리 (0) | 2023.07.20 |
Entity Framework Core] transactions (0) | 2023.07.14 |
댓글