대형 프로젝트 - C# + 유니티로 만드는 MMORPG 게임 개발/(5) EF Core

Migration

monstro 2025. 8. 25. 20:32
728x90
반응형

- 개요

migration 상태 관리의 일환으로,

데이터베이스를 업데이트하여 모델과 동기화하면서 기존 데이터보존하는 방법을 의미합니다.

항상 DB를 최신화하는 것이 아닌, snapshot을 찍어 작업한 시점의 데이터를 불러오는 것을 목적으로 합니다.

 

- migration의 절차

migration의 절차는 다음과 같이 이루어져 있습니다.

  • 1) migration 제작
  • 2) migration 적용

 

- migration의 제작

패키지 관리자 콘솔에서 Add-Migration [Name]의 명령어를 입력하여 migration을 제작합니다.

 

 

이때 EntityFrameworkCore.Tools 플러그인이 설치되어 있어야 합니다.

 

- Add-Migration 명령어의 절차

Add-Migration 명령어는 다음의 절차를 거쳐 진행됩니다.

  • 1) DBContext를 찾아서 분석하여 DB 모델을 최신화
  • 2) 생성된 ModelSnapshot.cs를 이용하여 가장 마지막 Migration 상태의 DB를 모델링
  • 3) 1)과 2)를 비교한 결과 도출
    • ModelSnapshot -> 최신 DB 모델링 결과 저장
    • Migrate.Designer.cs와 Migrate.cs -> Migration 관련 세부 정보 저장

 

- migration의 적용

migration을 적용하는 방법은 다음의 3가지가 존재합니다.

  • 1) SQL change script : 패키지 관리자 콘솔에서 Script-Migration [From] [To] [Options] 입력
  • 2) Database.Migrate 호출
  • 3) Command Line 방식 : 패키지 관리자 콘솔에서 Update-Database [options] 입력

 

- migration 관련 명령어

  • 특정 Migration으로 데이터 동기화 : 패키지 관리자 콘솔에서 Update-Database [Name] 입력
  • 마지막 Migration 삭제 : 패키지 관리자 콘솔에서 Remove-Migration 입력

 

- migration을 수행하는 3가지 방법

migration을 수행하는 경우EF-CoreDBContext와 엔티티 클래스동기화해야 하는,

또는 DB 테이블로 동기화해야 하는지에 따라 다르게 동작합니다.

  • 1) Code-First :  DBContext와 엔티티 클래스가 동기화해야 하는 기준
    • 지금까지 수행한 방법
  • 2) Database-First : DB 테이블이 동기화해야 하는 기준
    • 이미 완성된 DB로부터 DBContext와 엔티티 클래스를 역가공하는 방식
  • 3) SQL-First : DB 테이블이 동기화해야 하는 기준
    • 사용자가 직접 SQL로 작성한 데이터 테이블 구조를 동기화해야 하는 기준으로 설정
    • 사용방법 예시 1) 패키지 매니저 콘솔Script-Migration [From] [To] [Options] 입력
    • 사용방법 예시 2) DB끼리 대조하여 SQL을 추출
728x90
반응형