2014-06-24 2 views
1

저는 Entity Framework을 처음 사용하고 있으며 처음 코드를 새 데이터베이스에 적용하는 데 문제가 있습니다. 마이 그 레이션이 나쁜 상태에 빠졌다고 생각합니다. 코드 첫 번째 마이그레이션이 보이지 않습니다.

나는 기존 데이터베이스로 시작, 그래서 나는 괜찮 았는데

추가 마이그레이션 초기 -IgnoreChanges

를 사용하여 초기 빈 마이그레이션을 만들었습니다. 그 때 나는 새로운 엔티티를 추가하고 괜찮 았는데 다른 마이그레이션

추가 마이그레이션 NEW_ENTITY

를 만들었습니다. 이 마이그레이션을 __MigrationHistory 테이블이없는 기존 데이터베이스에도 적용 할 수 있으며 올바르게 업데이트됩니다.

빨리 감기 며칠 후 몇 가지 커밋이 있습니다. 이제 마이그레이션을 적용하려는 새로운 "깨끗한"데이터베이스가 생겼습니다. 나는 새 데이터베이스에서 내 app.config 파일을 가리

업데이트 - 데이터베이스

를 실행 비주얼 스튜디오에 가지고 그리고 그것은 나에게 맞게 데이터베이스를 업데이트 할 수 없습니다

를 알려줍니다 현재 모델은 의 변경 사항이 보류 중이며 자동 마이그레이션이 비활성화되어 있기 때문에 현재 모델입니다. 코드 기반 마이그레이션에 대한 보류중인 모델 변경 사항 을 작성하거나 자동 마이그레이션을 사용하도록 설정하십시오. 자동 마이그레이션을 사용하려면 DbMigrationsConfiguration.AutomaticMigrationsEnabled를 으로 설정하십시오. Add-Migration 명령을 사용하여 보류중인 모델 변경 사항을 코드 기반 마이그레이션에 쓸 수 있습니다.

그러나 보류중인 모델 변경 사항이 없습니다. 아무것도 변하지 않았다. 그러나 단지 무슨 일이 일어날 지보고, 나는

추가 마이그레이션 X

를 실행하며 데이터베이스 모델에있는 모든 개체를 추가하는 새로운 마이그레이션을 만들었습니다. 기본적으로 마치 마이그레이션이없는 것처럼 시작합니다. 그래서 그 중 하나를 삭제 한 후 -IgnoreChanges 플래그로 다시 추가했습니다. 그것은 저에게 빈 칸 하나를줍니다. 다음

업데이트 - 데이터베이스

를 실행하면 그것은 x 마이그레이션을 실행하지만 완전히 내가 며칠 전 (InitialNew_Entity) 만든 마이그레이션을 무시합니다. 그들이 존재한다는 것을 모르는 것 같습니다.

분명히 뭔가 나쁜 상태이지만 나는 그것을 되 찾을 수 있는지 잘 모르겠습니다. 새 엔티티 만 있으면 빈 컨테이너가 필요하기 때문에 마이그레이션을 삭제하고 다시 만들 수는 없습니다. 엔티티를 일시적으로 주석 처리 할 수있는 것은 많은 코드가 이미 그것에 의존하기 때문입니다.

어떻게 이런 혼란에 빠지게 되었습니까? 어떻게 나갈 수 있습니까?

답변

0

좋아, 나는이 바닥에 도달했다. 어떻게 든 (이 시점에서 어떻게) 마이그레이션 파일 폴더 내의 Configuration.cs 파일 내의 네임 스페이스가 변경되었는지를 알 수 있습니다. 분명히 이것은 다른 마이그레이션을 보지 못하게 시스템을 혼동시키기에 충분합니다. 처음에 생성 된 실제 마이그레이션 클래스와 동기화되지 않았기 때문에 처음에는 생각했습니다. 그러나 Congiguration.cs의 새 네임 스페이스 값과 일치하도록 마이그레이션 클래스의 네임 스페이스를 변경해 보았지만 마이그레이션은 여전히 ​​실패했습니다. Configuration.cs를 이전 네임 스페이스 값으로 되 돌린 후에 만 ​​작동했습니다.

거래가 정확히 무엇인지 정확히 알지 못합니다. 어쩌면 원본 네임 스페이스가 마이그레이션 resx 파일에 저장되어 더 이상 일치하지 않는 것으로 나타 났을 까?