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-Core의 DBContext와 엔티티 클래스로 동기화해야 하는지,
또는 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
반응형
'대형 프로젝트 - C# + 유니티로 만드는 MMORPG 게임 개발 > (5) EF Core' 카테고리의 다른 글
| Entity State & Relationship (2) (0) | 2025.08.26 |
|---|---|
| Entity State & Relationship (1) (0) | 2025.08.26 |
| Default Value (0) | 2025.08.25 |
| User Defined Function(UDF) (0) | 2025.08.25 |
| Backing Field + Relationship (0) | 2025.08.25 |