개인적으로는 EF Core의 자동 마이그레이션 기능이 훌륭하지만, 문제를 복잡하게 만들 것을 염려하는 점과 데이터베이스 작업은 신중하게 결정하면서 DBA와 함께 협업하는 것이 바람직하다고 보는 입장이라 여전히 DB 작업 만큼은 수동으로 처리하는 것을 선호하는 편입니다.
그렇지만 EF Core가 제공하는 강력한 DDL 생성 기능은 충분히 이용하고 싶다는 생각을 계속 가지고 있었는데, 그러다 간단한 유틸리티 메서드를 하나 만들어보았습니다.
EF Core 8 기준으로 설계한 샘플 코드인데, 원리는 간단합니다. 실제 DB 연결을 붙이지 않았더라도 어차피 아주 처음에는 아무것도 없는 상태에서 DB를 만들어야 하는 점에는 차이가 없으므로 DB 연결이 유효하지 않아도 최초 DDL 스크립트 생성은 가능한 것이 합리적이라 이 점을 이용해서 전체 DDL을 렌더링하는 도우미 메서드를 만들어보았습니다.
이 도우미 메서드가 작동하기 위해서는, DB 연결 문자열이나 DB 연결 객체를 붙이지 않아도 EF Options Builder에 관련된 컴포넌트를 추가할 수 있도록 설계된 EF Core Provider가 필요합니다. 그런데 주요 EF Core Provider 들이 이런 시나리오를 지원하고 있기 때문에 큰 어려움없이 전체 DDL 생성을 실물 DB 없이도 해낼 수 있습니다.
이렇게 만든 DDL을 DBA와 함께 검토하면서 차이점을 파악하고 꼼꼼하게 적용하기 위한 레퍼런스 자료로 쓸 수 있을 것입니다.
여기서 더 나아가서, EF Migration 사이의 차이점을 렌더링하는 라이브러리도 만들어볼 수 있을지 기회가 되면 따로 구현해보거나, 아니면 컨트리뷰션/피드백으로 코드 샘플을 더해주셔도 좋을 것 같습니다.