1

일부 값 개체 구성으로 내 샘플 프로젝트에서 EF Core 2.0을 사용하고 있습니다. 코드를 수정하고 CLI 명령 행을 통해 마이그레이션을 생성합니다. 마지막으로 이주 할 때 새 데이터베이스 테이블을 추가해야하는 대신 기존 테이블을 서로 바꿔서 기존 테이블을 추가 테이블로 작성하려고합니다. 나는 그 이유를 알 수 없었다.EF 핵심 마이그레이션 수동 편집이 가능합니까?

EF 코어를 사용하면 스냅 샷이 마이그레이션 자체와 별도로 자동 생성 된 파일이므로 스냅 샷을 수정하고 싶지 않으므로 문제가됩니다.

마이그레이션 스크립트를 수정하여 여러 테이블의 이름을 바꾸지 않고 내가 만든 마이그레이션에서 스냅 샷을 생성하기 만하면됩니다.

CLI에서이 명령이 표시되지 않았습니다. 스캐 폴딩 된 마이그레이션을 수정하고 재생성하는 것이 좋지 않습니까? 아니면 마이그레이션 스크립트를 수동으로 수정하는 방법에 대한 설명이있는 새로운 링크가 누락 되었습니까?

감사합니다.

업데이트 1 : 댓글 후 스냅 샷에 대한 정보를 this link에서 추가했습니다.

현재 데이터베이스 스키마가 코드로 표시되기 때문에 EF Core는 마이그레이션을 만들기 위해 데이터베이스와 상호 작용할 필요가 없습니다. 마이그레이션을 추가 할 때 EF는 데이터 모델을 스냅 샷 파일과 비교하여 변경된 사항을 결정합니다. EF는 데이터베이스를 업데이트해야 할 때만 데이터베이스와 상호 작용합니다. +

+0

파일을 수정할 수 없습니까? 별도로 지정하지 않으면 Migrations 폴더에 있습니다. – cassandrad

+0

나는 무엇이든 놓치면 스냅 샷이 부실하게 될 위험이 없다. 가능하다면 마이그레이션에서 생성하고 코드의 현재 상태가 결합 된 마이그레이션과 일치하지 않으면 프레임 워크에서 오류를 반환하고 싶습니다. – user3141326

+0

@cassandrad 그리고이 경우 스냅 샷과 파일간에 불일치가 있으면 어떻게됩니까? 같은 폴더에있는 _ContextModelSnapshot 파일입니다. 사용하지 않는 경우 용도는 무엇입니까? – user3141326

답변

0

소스 제어에서 생성 된 스냅 샷 코드를 검사했습니다. 그것은 정확히 내가 필요로 한 테이블을 추가했습니다.

이 스크립트를 생성하는 마이그레이션 스크립트는 여러 가지 테이블을 서로 이름을 바꿔 이름을 바꾸고 여러 문제를 일으킬 수 있다고 경고합니다.

최소한 모의 데이터 만있는 예제 프로젝트이므로 자동화 된 스크립트를 손상시키지 않기로했습니다. 나는 시간 낭비보다는이 단계에서 약간의 모의 데이터를 잃어 버릴 용의가있다.

프로덕션 데이터베이스에있는 경우 스캐 폴딩과 마이그레이션 파일을 모두 수정하여 동일한 결과를 수동으로 수동으로 작성하는 데 매우주의해야합니다.

다른 후보자가 없기 때문에이 답변을 현재 답변으로 받아들입니다 (기본적으로 현재 EF 코어는 현재 지식을 최대한 활용할 수 없습니다). 더 좋은 답변이 있으면 기꺼이 받아 들일 것입니다. 나타나다.