Entity Framework Code First를 사용하여 프로젝트를 시작했습니다. 준비가되면 데이터베이스와 코드를 호스트 공급자에게 업로드했습니다. 모든 것이 효과가있었습니다.MVC3 및 코드 첫 마이그레이션 - "데이터베이스가 생성 된 후 '어쩌구'컨텍스트를 지원하는 모델이 변경되었습니다."
내 클래스 중 하나에 새 필드를 추가해야하며 데이터베이스의 데이터를 잃어 버리고 싶지 않습니다. 따라서 코드 첫 마이그레이션을 사용하는 것에 대한 블로그 게시물을 몇 번 따라 보았습니다. 다음을 수행했습니다.
- 원격 (프로덕션) 데이터베이스를 백업했습니다.
- 나는 로컬이 데이터베이스를 첨부
- 내 클래스에 속성을 추가
- PM> 사용-마이그레이션
- PM> 추가 마이그레이션 AddSortOrderToCar
- PM> 업데이트 - 데이터베이스
- 을이 시점 I에서 로컬 데이터베이스의 .bak 파일을 만든 다음 해당 파일을 사용하여 원격 파일에 '복원'합니다.
- 마지막으로 원격 사이트에 코드를 게시했습니다.
나는 다음과 같은 오류 메시지가 사이트를 방문 : 데이터베이스가 생성 된 이후 는 'blahblah'컨텍스트를 백업 모델이 변경되었습니다. 코드 첫 번째 마이그레이션을 사용하여 데이터베이스를 업데이트하는 것이 좋습니다.
내가 뭘 잘못하고 있니?
'업데이트 - 데이터베이스 -Script은'했다. 나는 'Update-Database'명령이 똑같은 일을했을 것이라고 생각했지만 스크립트를 생성하지는 않았다. 어쨌든. 감사! –
@ScottDietrich - np - 음, 그래야하지만 모든면에서 동기화를 유지해야합니다 (예 : 마이 그 레이션은 로컬 DB 등의 '상태'를 기반으로 생성됩니다). 따라서 마이 그 레이션이 '로컬' db vs code - 일단 '움직이는 것을 밖으로 시작'하면 더 많은 기회가 있습니다. 당신이 서버에 dev 설정을하지 않는 한, SQL 스크립트는 더 안전한 방법으로 밝혀졌습니다. (적절한 위치에 마이 그 레이션을 수행 할 수 있도록) – NSGaga
일부 마이 그 레이션이있는 DB가 있습니다. 실행되었지만 __MigrationHistory 테이블의 레코드가 동일한 마이그레이션이 다시 실행되는 것을 중지하지 않았습니다. __MigrationHistory 테이블의 모든 행을 삭제 한 다음 -Script 명령에 의해 수동으로 생성 된 INSERT INTO [__MigrationHistory] 행을 삽입했습니다. 마이그레이션 기록이 다시 나타납니다. 매우 유용한 답변을 주셔서 감사합니다 @ NSGaga! –