2016-12-26 1 views
3

테스트 및 라이브 DB가 있습니다. 테스트 데이터베이스 마이그레이션의 경우 패키지 관리자 콘솔에서 Add-Migration ...Update-Database 구문을 사용합니다. 하지만 라이브 DB에 대해서는 앱이 시작될 때 프로그래밍 방식으로 수행하려고합니다.Entity Framework 핵심 프로그래밍 방식으로 마이그레이션 적용

다음 코드는 나에게 도움이되지 않았다 : 나는 존재하지 않는 테이블에 레코드를 추가하려고 할 때 오류 Invalid object name 'TempTenants'

context.Database.Migrate(); 

. 이게 내 새 테이블이야.

그러나 나는 _EFMigrationsHistory 테이블을 가지고 있습니다. 그리고 적용되지 않은 마이 그 레이션도 있습니다. 하지만 새 테이블이 보이지 않습니다.

테스트 DB에서 수동으로 테이블을 제거하고 오류를 재현하려고하면 같은 결과가 나타납니다.

따라서 context.Database.Migrate();은 존재하지 않는 모든 마이 그 레이션이있는 새 db 만 작성하고 기존 db를 업데이트 (마이그레이션 적용)하지는 않습니다.

그럴 수 있습니까? 어떻게 해결할 수 있습니까?

+0

"나에게 도움이되지 못했습니다." 왜? 어떻게 된 거예요? 에러 메시지? 또한 초기에 마이 그 레이션에 의해 생성 된 db도있었습니다 ('__EFMigrationsHistory' 테이블이 있습니까?)? – Tseng

+0

@Tseng 제 질문을 업데이트했습니다. 제발. 제발. –

+0

시작시 예외가 없습니까? 로그는 무엇을 읽나요? 사용자가 데이터베이스 서버에 대한 충분한 쓰기 권한을 가지고 있습니까? (ALTER/CREATE 문) – Tseng

답변

1

문제가있는 것 같습니다. __EFMigrationsHistory 테이블 (이전의 상태로 일부 테이블 이름, 기본 및 외래 키를 되돌릴 필요가 있음)에서 적용되지 않은 마이그레이션 (레코드)을 제거하고 다시 응용 프로그램을 시작했습니다.

따라서 context.Database.Migrate();은 기존 데이터베이스에도 마이그레이션을 적용합니다.

관련 문제