[entity-framework] 엔티티 프레임 워크에서 명시 적 마이그레이션을 생성 할 수 없습니다.

새 마이그레이션을 추가하고 있지만이 메시지는 다음과 같습니다.

다음 명시 적 마이그레이션이 보류 중이므로 명시 적 마이그레이션을 생성 할 수 없습니다. [201203170856167_left]. 새 명시 적 마이그레이션을 생성하기 전에 보류중인 명시 적 마이그레이션을 적용하십시오.

아무도 나를 도울 수 있습니까?



답변

애플리케이션에 처리되지 않은 마이그레이션이 있으며 Update-Database다른 마이그레이션을 추가하기 전에 실행 해야 함을 알려줍니다 .


답변

나는 같은 문제가 있었다. 분명히 엔티티 프레임 워크는 데이터베이스에 연결할 수 없을 때이 오류를 생성합니다. 따라서 다른 문제를 검색하기 전에 액세스 할 수 있는지 확인하십시오.


답변

패키지 관리자 콘솔에서 “update-database”를 실행하여 변경 사항을 데이터베이스에 푸시하거나 마이그레이션 폴더에서 보류중인 마이그레이션 파일 ([201203170856167_left])을 삭제 한 다음 “add-migration”을 다시 실행하여 편집 내용을 기반으로 새로운 마이그레이션을 만듭니다.


답변

이 오류는 마이그레이션이 더 이상 인식되지 않음을 의미 할 수도 있습니다. 이것은 Migrations.Configuration에서 ContextKey의 값을 변경 한 후 나에게 발생했습니다. 해결책은 단순히 데이터베이스 테이블 “__MigrationHistory”에서 ContextKey를 업데이트하는 것입니다 (또는 내가 추측하는 Configuration 클래스의 값을 되돌림). 애플리케이션의 ContextKey와 네임 스페이스가 일치해야합니다.


답변

1. 연결 문자열 / 연결 권한

연결 문자열을 다시 확인하십시오.

연결중인 사용자에게 여전히 읽기 [__MigrationHistory]권한과 스키마 편집 권한 이 있는지 확인하십시오 .

통합 보안 (Windows Auth)을 사용하여 add-migration 명령을 직접 실행하도록 앱 또는 웹 구성 파일의 연결 문자열을 변경해 볼 수도 있습니다 .

예를 들면 :

connectionString="data source=server;initial catalog=db;persist security info=True;Integrated Security=SSPI;" 

이 연결 문자열은 DbContext가있는 프로젝트의 App.config 파일에 저장됩니다.

2. 시작 프로젝트

명령 줄에서 시작 프로젝트를 지정하거나 DbContext, Configuration및 마이그레이션 폴더가 있는 프로젝트를 마우스 오른쪽 단추로 클릭하고 시작 프로젝트로 설정을 선택할 수 있습니다. 나는 진지하다. 이것은 실제로 도움이 될 수있다.

여기에 이미지 설명 입력


답변

같은 문제가 있었고 위의 답변에서 몇 가지 힌트로 해결할 수있었습니다.

  • 패키지 관리자 콘솔에서 기본 프로젝트를 확인합니다 (마이그레이션 구성이있는 프로젝트를 가리 킵니다.
  • startup-proj에 유효한 연결 문자열이있는 web.config가 있는지 확인하십시오 (또는
  • 마이그레이션이있는 프로젝트에 유효한 연결 문자열이있는 app.config / web.config가 있는지 확인하십시오.
  • DB에서 권한 확인 (연결 문자열에 구성된 사용자에 대해)

패키지 관리자 콘솔에서 “update-database -verbose”를 사용하여 마이그레이션이 연결을 시도하는보다 구체적인 정보를 얻으십시오. (내 경우에는 시작 프로젝트가 올바르게 설정되지 않았 음을 확인하는 데 도움이되었습니다 …)


답변

사용하지 않았다면 Update-Database그냥 삭제할 수 있습니다. 업데이트를 실행 한 경우을 사용하여 롤백 Update-Database -TargetMigration "NameOfPreviousMigration"한 다음 삭제합니다.

참조 :
http://elegantcode.com/2012/04/12/entity-framework-migrations-tips/

이 텍스트를 여기에서 직접 복사했습니다 . 마지막 마이그레이션 추가 명령을 실행 취소하려면 어떻게합니까?