작업을 하다 보면 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 생성 완료
![[c# EntityFramework] dbcontext 마이그레이션 롤백하는 방법 - 이 글을 읽기 전 선수 지식 포스팅 - 초기 세팅 - 1) 최초 DB 연결 및 테이블 생성용 클래스 만들기 첫번째 DB](http://t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png)
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 생성 완료
![[c# EntityFramework] dbcontext 마이그레이션 롤백하는 방법 - 이 글을 읽기 전 선수 지식 포스팅 - 초기 세팅 - 2) 클래스 수정 후 2번째 마이그레이션 파일 생성 두번째 DB](http://t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png)
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 생성 완료
![[c# EntityFramework] dbcontext 마이그레이션 롤백하는 방법 - 이 글을 읽기 전 선수 지식 포스팅 - 초기 세팅 - 3) 클래스 수정 후 3번째 마이그레이션 파일 생성 세번째 DB](http://t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png)
롤백하는 방법
여기서 Email
컬럼을 제거하고 싶다.
그러기 위해선 2번째 마이그레이션을 했던 시기로 돌아가야 한다.
어떻게 할까?
update-database [돌아가고싶은 마이그레이션 파일 이름]
(마이그레이션 파일이름이 20230223020139_second
라면 _
뒤 second
만 입력하면 된다.)
update-database second
//output
Build started...
Build succeeded.
Reverting migration '20230223020139_third'.
Done.
하지만 없어졌어야할 _third
파일은 여전히 존재한다.
![[c# EntityFramework] dbcontext 마이그레이션 롤백하는 방법 - 이 글을 읽기 전 선수 지식 포스팅 - 롤백하는 방법 여전히 존재하는 migration 파일](https://blog.kakaocdn.net/dn/bkkc2c/btr1dmASB2E/eKL4zhEKkKj24WskzIKSd0/img.png)
이때는 아래 명령어를 이용하면 정상적으로 삭제된다.
remove-migration
여기서 궁금증❓이 생길 수있다.
첫 마이그레이션 이전 상태(아무것도 안 한상태)로 돌아가고 싶다면?
이때는 update-database
뒤 0
을 붙여 주면 된다.
update-database 0
최초 생성한 DB가 갈끔하게 제거된다.
'c#' 카테고리의 다른 글
[c# Linq] Select vs SelectMany 차이 (0) | 2023.03.20 |
---|---|
[c# ] 필드 | 프러퍼티 앞에 붙어 있는 required는 뭘까? (0) | 2023.03.13 |
[c#] json 파싱하는법 (0) | 2023.02.23 |
C#에서 파이썬 파일 실행 시키는 방법 완벽정리(with Process) (1) | 2023.01.03 |
[c#] Entity Framework 사용 방법(code-first) (0) | 2022.08.19 |
댓글
꼬예님의
글이 좋았다면 응원을 보내주세요!
이 글이 도움이 됐다면, 응원 댓글을 써보세요. 블로거에게 지급되는 응원금은 새로운 창작의 큰 힘이 됩니다.
응원 댓글은 만 14세 이상 카카오계정 이용자라면 누구나 편하게 작성, 결제할 수 있습니다.
글 본문, 댓글 목록 등을 통해 응원한 팬과 응원 댓글, 응원금을 강조해 보여줍니다.
응원금은 앱에서는 인앱결제, 웹에서는 카카오페이 및 신용카드로 결제할 수 있습니다.