Entity Framework-다시 시작-모든 마이그레이션 실행 취소 / 롤백


168

어떤 이유로, 나의 이주가 혼란 스럽거나 부패한 것으로 보입니다. 방금 다시 시작하려는 시점에 있으므로 모든 마이그레이션을 완전히 취소하고 기록을 지우고 마이그레이션 코드를 삭제하는 방법이 있습니까?

예) PM> Disable-Migrations또는Rollback-Migrations

InitialSchema더 이상 찾을 수 없기 때문에 원래 마이그레이션 단계 (예 : 대상 과 같은 ) 로 "업데이트"하고 싶지 않습니다.

답변:


358

다음을 사용하여 마이그레이션으로 롤백 할 수 있습니다.

Update-Database -TargetMigration:"MigrationName"

모든 마이그레이션을 롤백하려면 다음을 사용할 수 있습니다.

Update-Database -TargetMigration:0

또는 동등한 것 :

Update-Database -TargetMigration:$InitialDatabase 

경우에 따라 데이터베이스 및 모든 마이그레이션 클래스를 삭제할 수도 있습니다.


6
평소와 같이, 당신은 최고입니다.
drzaus

2
이해가되지 않습니다. OP는 구체적 으로 "더 이상 찾을 수 없기 때문에 원래 마이그레이션 단계 (예 : InitialSchema 대상과 같은 것)로"업데이트하고 싶지 않습니다 "라고 말합니다. 이 답변은 그가 원하는 것을 어떻게합니까? 내가 일어날 것으로 예상되는 것은 내가 enable-migrations다시 해야 할 상태에있을 것 입니다. 이것들은 분명히 도움이되지만 OP가 요구하는 것을 달성합니까? ( '글쎄요, 그는 대답을 받아 들였습니다.'라는 답장을 보내지 마십시오. 나는 이것을 이해하려고 노력하고 있습니다.
Michael Blackburn

@MichaelBlackburn : enable-migrations다시 실행 하고 처음부터 데이터베이스를 개발하는 경우 마지막 문장을 따라야합니다 : 데이터베이스 및 모든 마이그레이션 관련 코드를 삭제하십시오. 기존 데이터베이스에서 마이그레이션을 사용하기 시작한 경우 먼저 두 번째 또는 세 번째 명령을 사용하여 모든 마이그레이션을 되돌리고 MigrationHistory테이블 및 모든 마이그레이션 관련 코드 를 삭제해야 합니다. 시작 위치로 이동해야합니다. 또한 마이그레이션을 사용하기 전에 백업에서 데이터베이스를 시작하고 마이그레이션 관련 코드를 모두 삭제할 수 있습니다.
Ladislav Mrnka

4
@ MichaelBlackburn : 내가 본 것은 다른 모든 솔루션을 사용하여 첫 번째 명명 된 마이그레이션으로 다시 업데이트하라고 말 했지만 내 문제는 업데이트 할 초기 클린 마이그레이션 이 없다는 것입니다. 방법에 관계없이 모든 마이그레이션을 제거하고 싶었습니다. 따라서이 답변이 내 문제 해결-TargetMigration:0
drzaus


8

LocalDb를 사용하는 경우 처음부터 시작하려면 데이터베이스 탐색기를 통해 데이터베이스를 삭제 한 다음 enable-migrations -force패키지 관리자 콘솔에 입력하십시오. App_Data 폴더를 통해 데이터베이스를 삭제하지 마십시오. 그렇지 않으면 다음과 같은 문제가 발생 합니다.


2
마이그레이션 할 때 경고없이 Migrations \ Configuration.cs를 덮어 쓰므로주의하십시오!
cgatian

경고에 감사드립니다. 시간이 지나면 코드를 첫 번째 방법으로 거의 떨어 뜨 렸습니다. 모든 코드를 한 번에 배치하고, 데이터베이스 자체의 소스 제어 버전을 관리하는 것이 좋지만 다른 큰 이점은 보지 못했습니다. 먼저 데이터베이스로 다시 전환했습니다. Red Gate Sql Compare를 사용하여 모든 델타를 추적합니다.
브라이언 오그 던


당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.