무효 클릭 IP 추적 중...
c#

[c# EntityFramework] dbcontext 마이그레이션 롤백하는 방법

꼬예 2023. 2. 28.

작업을 하다 보면 DB를 잘못 만들어 과거로 돌아가고 싶을때가 있다.

이때는 엔터티 프레임워크에서 제공하는 롤백을 이용하면 손쉽게 과거로 돌아갈 수 있다.

 

이 글을 읽기 전 선수 지식 포스팅

 

초기 세팅

1)  최초 DB 연결 및 테이블 생성용 클래스 만들기

using Microsoft.EntityFrameworkCore;

public class TestDbContext : DbContext
{
    public DbSet<Player> Players { get; set;}

    protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
    {
        optionsBuilder.UseSqlServer(@"Data Source=(localdb)\MSSQLLocalDB;Initial Catalog=PlayerDB;Integrated Security=True;");
    }
}


public class Player
{
    public int Id { get; set; }
    public string? Name { get; set; }
}

 

마이그레이션 및 데이터베이스 적용

add-migration first
update-database

 

DB 생성 완료

첫번째 DB

 

2) 클래스 수정 후 2번째 마이그레이션 파일 생성

age 프러퍼티 추가

public class Player
{
    public int Id { get; set; }
    public string? Name { get; set; }
    public int age { get; set; } //새로 추가
}

 

2번째 마이그레이션 파일 및 DB 수정

add-migration second
update-database

 

DB 생성 완료

두번째 DB

 

3) 클래스 수정 후 3번째 마이그레이션 파일 생성

Email 프러퍼티 추가

public class Player
{
    public int Id { get; set; }
    public string? Name { get; set; }
    public int age { get; set; } 
    public string? Email { get; set; } //새로 추가
}

 

3번째 마이그레이션 파일 및 DB 수정

add-migration third
update-database

 

DB 생성 완료

세번째 DB

 

 

롤백하는 방법

여기서 [ic]Email[/ic]컬럼을 제거하고 싶다.

그러기 위해선 2번째 마이그레이션을 했던 시기로 돌아가야 한다.

어떻게 할까?

 

[ic]update-database [돌아가고싶은 마이그레이션 파일 이름] [/ic]

(마이그레이션 파일이름이 [ic]20230223020139_second[/ic]라면 [ic]_[/ic] 뒤 [ic]second[/ic]만 입력하면 된다.)

update-database second

//output
Build started...
Build succeeded.
Reverting migration '20230223020139_third'.
Done.

 

하지만 없어졌어야할 [ic]_third[/ic] 파일은 여전히 존재한다.

 

여전히 존재하는 migration 파일

 

이때는 아래 명령어를 이용하면 정상적으로 삭제된다.

remove-migration

 

여기서 궁금증이 생길 수있다. 

첫 마이그레이션 이전 상태(아무것도 안 한상태)로 돌아가고 싶다면?

 

이때는 [ic]update-database[/ic]뒤 [ic]0[/ic]을 붙여 주면 된다.

update-database 0

 

최초 생성한 DB가 갈끔하게 제거된다.

  • 트위터 공유하기
  • 페이스북 공유하기
  • 카카오톡 공유하기
이 컨텐츠가 마음에 드셨다면 커피 한잔(후원) ☕

댓글