2017-02-01 1 views
0

데이터베이스를 관리하기 위해 Entity Framework 6.1을 사용하는 C# 프로젝트가 있습니다. 개발 과정에서 일부 테이블에 필드를 추가하려고했습니다. 그래서 새 필드를 포함하도록 InitialCreate.cs 마이그레이션을 편집 한 다음 SQL Server 내 데이터베이스를 삭제했습니다. 내가 Update-Database을 실행하는 데 갈 때 나는 내가이 오류가 기대하지 않았다 서버에서 데이터베이스를 삭제 한 이후Entity Framework 6.1은 편집 된 InitialCreate를 사용하는 대신 마이그레이션을 수행합니다.

Unable to update database to match the current model because there are pending changes and automatic migration is disabled 

... 다음과 같은 오류가 발생합니다. 더 이상 마이그레이션 테이블이 없으므로 수정 된 버전의 InitialCreate.cs 파일을 사용하여 데이터베이스를 작성해야합니다. 단일 InitialCreate.cs 파일을 기준으로 여러 마이그레이션을 피하려고합니다. 왜 응용 프로그램에서 직접 편집 한 InitialCreate.cs 파일을 사용하지 않는 것입니까? 새 마이그레이션 파일을 만들어야하는 이유는 무엇입니까?

패키지 관리자 콘솔에서 Add-Migration을 사용할 수 있지만 여러 개의 마이그레이션 파일을 원하지 않습니다. 나는 단지 하나만 원해. 코드로 생각했는데 먼저이 작업을 수행 할 수있었습니다.

답변

2

먼저 코드에서 모든 변경 작업을 수행하고 이니셜 라이저 또는 마이그레이션을 통해 데이터베이스를 업데이트해야합니다. 당신은 당신이 항상 삭제할 수 있습니다 마이그레이션 파일의 수를 최소화하려면을 (롤업)과 기준을 재설정 :

1) 모든 마이그레이션

2

) add-migration MyStartingPoint -IgnoreChanges를 사용하여 무 조작 마이그레이션을 추가을 삭제합니다. Up()/Down()에 코드가없는 모델의 현재 상태에 대한 스냅 샷을 찍습니다. 적용하려면 update-database

3) 이제 모든 모델 변경을 수행하고 새로운 마이그레이션을 추가하십시오.

언제든지 모든 마이그레이션을 삭제하고 배포 한 모든 데이터베이스가 최신 상태 인 동안이 단계를 반복 할 수 있습니다. 또한 마지막으로 마이그레이션 한 내용을 삭제하고 다시 추가하면 이전 마이그레이션과의 차이점을 모두 파악할 수 있습니다. here을 참조하십시오.

관련 문제