• 카테고리

    질문 & 답변
  • 세부 분야

    백엔드

  • 해결 여부

    미해결

이미 스캐폴딩을 한 경우에 강의 코드들을 적용하고 마이그레이션 하면 어떻게 될까요?

20.11.19 10:53 작성 조회수 105

0

안녕하세요. 좋은 강의 잘 듣고 있습니다. 

이미 Identity 폴더에 스캐폴딩을 했고, AspNetUsers 등의 엔티티가 생성되어 있는 상황인데, 이 강의를 보니 테이블 명도 바꾸고  하던데.. 강의에 사용된 코드들을 적용하고 마이그레이션 해도 될까요? 아니면 기존 걸 지우고 해야 하나요? 

마이그레이션에서 하도 에러를 많이 겪어서 겁이 납니다. 좋은 팁이나 가이드 부탁드립니다. 감사합니다~

답변 3

·

답변을 작성해보세요.

1

먼저, 질문해 주셔서 감사합니다.

프로젝트를 생성하면 자동으로 "00000000000000_CreateIdentitySchema.cs" 마이그레이션 파일이 생성되어 있습니다.

그런데, 이것을 바로 데이터베이스에 적용하면 안 됩니다.

"20200724043036_Create_Identity.cs" 이 파일부터 마이그레이션을 하셔야 합니다.(여기서 접두어는 생성날짜 및 시간에 따라 정해집니다.)

마이그레이션 파일 이름은 강의에 언급된 대로 하셔도 되고, 본인의 의도에 맞게 바꾸셔도 됩니다.

다만, 마이그레이션 파일 생성은 "ApplicationDbContext.cs" 파일 내용에 따라 바뀌므로,

기존에 만드신 마이그레이션을 전부 지우고 새로 생성하셔도 문제 없습니다.

마지막 "20200730031805_SeedSiteRole.cs" 파일은 수동으로 작업해 주셔야 Application 실행하실 때

무리없이 회원관리를 사용하실 수 있습니다.

--------------------------------------------------------------------------------------------------------

실제 작업하실 때 컬럼을 하나 추가하거나, 컬럼의 데이터 타입을 변경하거나 하는 사소한 변경도

각각 마이그레이션 파일로 생성해서 사용하셔야 합니다.

직접 데이터베이스에서 수정하실 경우, 다음 마이그레이션에서 에러를 만났을 때, 문제 해결하기 어려울 수 있습니다.

저도 습관적으로 직접 데이터베이스에서 수정할 때가 있는데, 그럴 때는 직접 수정한 부분을 원위치로 돌리고

마이그레이션을 실행하거나, 데이터베이스 모든 테이블들을 삭제하고, 처음부터 다시 마이그레이션을

적용합니다.

그럼, 오늘도 즐거운 코딩하세요.

0

제가 당연히 도와드려야죠.

(1) 스냅샷 파일로 인해서 마이그레이션 부분이 좀 복잡한 감이 있습니다.(^^)

또한, Data 폴더안에 있는 Migrations 폴더를 지우면

그 다음부터는 Root에 Migrations 폴더가 생깁니다.

(2) 전체 마이그레이션에 문제가 발생할 경우에,

데이터베이스의 테이블들은 수동으로 지워주셔야 합니다.

자세한 내용은 연이어 질문하신 곳에 답변했으니 그 내용을 참고해 주세요.

감사합니다.

0

Justin님의 프로필

Justin

질문자

2020.11.23

상세한 답변 감사합니다. 

기존 마이그레이션을 전부 지우는 방법을 좀 알려주세요. 마이그레이션 파일 잘 못 지우면 계속 에러만 나는 경우가 많아서 겁이 납니다. (1) Migrations 폴더 안의 .cs 파일들(스냅샷 포함) 을 그냥 다 삭제해도 되나요? (2) 그럴 경우 웹에 이미 생성되어 있는 AspNetUsers 와 같은 폴더들은 수동으로 지워줘야 하나요? 

번거로우시겠지만, 도움 부탁드립니다. 감사합니다~