4

EF 마이그레이션은 멋지지만 너무나 많은 "마법"이 진행되고 실제로 수행되는 작업에 대한 설명은 거의 없습니다. 마이그레이션 지점을 설정하고 DDL 스크립트를 가져 오는 것입니다. 하나의 마이그레이션에서 다른 마이그레이션으로 "diff"스크립트를 사용하거나 전체 DDL 스크립트를 작성하는 것입니다.실제 데이터베이스에 의존하지 않고 Entity Framework 4.3 마이그레이션 사용

문제는 모든 마이그레이션 명령이 실제 데이터베이스에 의존하여 내가 관심이없는 것들을 수행한다는 것입니다. 모든 것을 무시하고 마이그레이션을 사용하여 스크립트를 생성하는 방법이 있습니까?

+0

마이그레이션 (이상) 설계에 대해 전적으로 동의합니다. 데이터베이스없이 Update-Database를 제외한 모든 단계를 수행 할 수 있다면 전체 개념이 팀 환경에서 훨씬 잘 작동합니다. –

답변

0

이것은 discussed yesterday입니다. 마이그레이션 명령은 실제 ​​상태를 가져오고 수행해야 할 변경 사항을 올바르게 계산하기 위해 __MigrationHistory 테이블과 상호 작용하기 때문에 작업 데이터베이스에 종속됩니다.

는 전체 데이터베이스에 대한 스크립트를 작성 : 당신은 그냥 스크립트를 작성해야하는 경우

는 추가 매개 변수를 업데이트-데이터베이스를 사용하여 그렇게 할 수

Update-Database -Script -SourceMigration:$InitialDatabase 

마이그레이션에 마이그레이션 A에서 업그레이드 스크립트를 작성 B :

Update-Database -Script -SourceMigration:"A" -TargetMigration:"B" 
+0

아쉽게도 두 번째 마이그레이션을 만들지 못하기 때문에 두 번째 예제를 실행할 수 없습니다. 즉, 명시 적 마이그레이션이 보류 중이라고합니다. 매우 실망스럽고, 수행하려고하는 "마법"을 선택 해제하는 옵션이 있어야합니다. –

+0

데이터베이스 없이도 작동한다고 말하지 않았습니다. 현재 버전의 마이그레이션에는 데이터베이스가 핵심 요구 사항입니다. 데이터베이스에 적용되지 않은 마이그레이션은 둘 이상 가질 수 없습니다. 맘에 들지 않는다면 데이터베이스 업그레이드를 직접 처리해야합니다 (예 : VS Database 프로젝트). –

+0

물론 데이터베이스에 따라 다르지만 필자가 마이그레이션 지점을 명시 적으로 설정하고 스크립트에서 마이그레이션 지점을 지정하는 경우에는 완전히 필요하지 않습니다. 간단히 말해서 사용하지 말라는 것은 내 요구 사항을 충족시키지 못한다는 점을 고려할 때 분명하고 조금은 당황 스럽다. –