본문 바로가기
Entity Framework Core

Entity Framework Core] 팀 개발 환경에서 Migrations

by Fastlane 2023. 7. 20.
728x90
반응형

팀 개발환경에서 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을 재생성하므로 해결할 수 있다. 다음의 단계를 따른다. 

  1. merge를 되돌리고, working directory를 이전 merge 상태로 rollback한다. 
  2. model changes는 그대로 유지한 채, migration을 삭제한다. 
  3. 동료의 변경사항을 당신의 working directory로 merge한다. 
  4. 당신의 migration을 재추가 한다. 

이렇게 하면, 두 migrations이 정확한 순서로 적용된다. 컬럼명이 Alias로 바뀐다음, Username으로 바뀐다. 당신의 migration은 안전하게 동료들에게 공유될 수 있다. 

 

728x90
반응형

댓글