8

웹에서 답변을 찾을 수없는 문제가 있습니다.EF 4.3 마이그레이션 - 다운 그레이드 스크립트를 작성하는 방법?

저는 CodeFirst EF 4.3.1 MsSQL을 사용한 마이그레이션을 사용하고 있습니다.

몇 가지 마이그레이션을 추가했으며 이제 두 마이그레이션 사이에 업그레이드/다운 그레이드 용 스크립트를 생성하려고합니다. 업그레이드의

나는 성공적으로 업그레이드 스크립트를 재현 다음 명령을 실행

PM> Update-Database -Script -SourceMigration:"201205161203310_BlogLimitsAndTableRename" -TargetMigration:"201205161144187_AddPostAbstract" 
Scripting the downgrade between two specified migrations is not supported. 

모든 아이디어 : 나는 다음과 같은 오류와 함께 실패 다음 명령을 실행 다운 그레이드를 들어,

PM> Update-Database -Script -SourceMigration:"201205161144187_AddPostAbstract" -TargetMigration:"201205161203310_BlogLimitsAndTableRename" 

단을 다운 그레이드 스크립트를 생성하려면 어떻게해야합니까?

감사합니다.

답변

10

마이그레이션 API는 "마지막 버전"에서만 다운 그레이드하려고한다고 생각합니다.

BlogLimitsAndTableRename 경우 가장 최근의 마이그레이션 (마지막 적용)를 사용하면 간단하게 실행할 수있다 :

Update-Database -Script -TargetMigration:"201205161144187_AddPostAbstract" 

을 당신이 처음에 개발 데이터베이스를 되돌려 야 마지막 마이그레이션이 아닌 경우 :

Update-Database -TargetMigration:"201205161203310_BlogLimitsAndTableRename" 

이제 첫 번째 명령을 사용하여 스크립트를 가져올 수 있어야합니다.

+0

의미가 있습니다. 상태 5의 데이터베이스가 있다고 가정하고 스크립트를 4에서 3으로 다운 그레이드하려고하면 데이터베이스가 쉽게 손상 될 수 있습니다. db를 4 번 상태로 돌리거나 4 번 상태로 로컬 푸시하면 돌이킬 수없는 혼란을 만들기 전에 그것에 대해 생각하게 만듭니다. OTOH는 약간의 -Force 스위치 또는 큰 빨간색 경고로 지원 될 수 있습니다. :) –

+1

상태 5에 데이터베이스가 있다고 생각했는데 이제 스크립트를 5에서 2로 다운 그레이드하려고합니다. EF 마이그레이션으로 인해 5에서 4로 다운 그레이드되고 4에서 3으로 다운 그레이드되고 3에서 2로 다운 그레이드됩니다. 이 모든 다운 그레이드를 실제로 실행할 필요없이 이미 포함 할 단일 스크립트를 작성하는 것이 좋습니다. 예를 들어 업그레이드의 경우 데이터베이스를 상태 5에두고 스크립트를 2에서 5로 업그레이드 할 수 있습니다. – mayash

+0

또는 상태 5의 데이터베이스가 있고 2에서 4로 업그레이드하는 스크립트를 생성 할 수 있습니다. – mayash