EF7 마이그레이션 클래스 및 스냅 샷 수동 편집

code-first-migrations entity-framework-core

문제

EF7 migration add 명령 (date, beta5까지)은 DbContext 에 정의 된 모델 클래스를 현재 모델 스냅 샷과 비교하고 새 마이그레이션 클래스를 만들고 모델 스냅 샷을 업데이트합니다.

다른 DDL SQL을 생성하도록 마이그레이션을 수정해야합니다. 예를 들어, EF7은 SQL Server 자동 증가 값에 대한 시퀀스를 사용하며 ID를 사용하려고합니다. 그러나 다른 이유가있을 수 있습니다. migration remove 명령은 마이그레이션 파일을 실제로 삭제하고 모델 스냅 샷을 되돌 리므로이 경우에는 유용하지 않습니다.

편집해야하는 것처럼 보이는 관련 코드가 포함 된 3 개의 파일이 있습니다.

  1. 기본 마이그레이션 클래스 : UpDown 방법을 수정해야합니다.
  2. DbContextModelSnapshot 파일에 수정해야하는 주석이 포함되어 있습니다.
  3. 2 차 마이그레이션 부분 클래스 : 잘못 명명 된 [migration].Designer.cs 파일에는 마이그레이션을위한 모델 스냅 샷도 들어 있습니다. 이 스냅 샷은 항목 2의 모델 스냅 샷과 일치해야하지만 확실하지는 않습니다. 내가 그 목적에 대해 가지고있는 유일한 정보는 Brice의 블로그 에 있습니다. "당신이나 공급자가 마이그레이션 중에 추가 정보를 얻기 위해 모델을 검사해야 할 경우에 대비해."

특정 질문 :

  1. 마이그레이션을 올바르게 수행하려면 두 모델 스냅 샷을 동기화 상태로 유지해야합니까?
  2. 3 개의 개별 파일을 마이그레이션을 편집하는 유일한 방법으로 수정하고 있습니까? (변경 사항에 따라 일부 경우에는 모델 스냅 샷을 만질 필요가 없습니다.)
  3. 마이그레이션 방법이 아닌 모델 스냅 샷 만 재생성하는 EF 명령이 있습니까?

수락 된 답변

구체적인 답변 :

  1. 마이그레이션을 올바르게 수행하려면 두 모델 스냅 샷을 동기화 상태로 유지해야합니까?
    아니요. 마이그레이션의 스냅 샷은 제공자 작성자를위한 최후의 수단 입니다. 예를 들어 SQLite는 열의 이름을 바꿀 수 없으므로 마이그레이션의 모델 스냅 샷을 사용하여이 작업에 대한 테이블 재 작성 을 수행 할 수 있습니다. 시간의 99 %는 사용되지 않습니다.

  2. 3 개의 개별 파일을 마이그레이션을 편집하는 유일한 방법으로 수정하고 있습니까?
    대부분의 경우 기본 마이그레이션 파일 만 편집해야합니다. 드문 경우이지만 팀 환경에서 작업하면서 병합 충돌이 발생할 경우 모델 스냅 샷을 편집해야 할 수도 있습니다. 디자이너 파일을 무시할 수 있습니다. 마이그레이션에 대한 일부 메타 데이터 만 캡처합니다.

    모델을 올바르게 구성하지 않으면 아무 것도 편집하지 않아도됩니다. 예를 들어 시퀀스 대신 ID를 사용하려면 DbContext.OnModelCreating() 재정의하고 modelBuilder.ForSqlServer().UseIdentity() 합니다.

  3. 마이그레이션 방법이 아닌 모델 스냅 샷 만 재생성하는 EF 명령이 있습니까?
    아니요, 이러한 파일을 거의 편집하지 않으므로 필요하지 않습니다.




아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow
이 KB는 합법적입니까? 예, 이유를 알아보십시오.
아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow
이 KB는 합법적입니까? 예, 이유를 알아보십시오.