EF 5 코드 우선 마이그레이션에서 전체 SQL 스크립트 생성


145

Entity Framework 5 Code First Migrations를 사용하여 초기 (빈) 상태에서 최신 마이그레이션까지 전체 데이터베이스 스크립트를 작성하려면 어떻게해야합니까?

MSDN 블로그 의 블로그 게시물 에서이 작업을 제안하지만 빈 스크립트를 만드는 것 같습니다.

Update-Database -Script -SourceMigration: $InitialDatabase

답변:


286

API가 변경된 것 같습니다 (적어도 나를 위해 작동하지 않습니다).

패키지 관리자 콘솔에서 다음을 실행하면 예상대로 작동합니다.

Update-Database -Script -SourceMigration:0

14
나는 이것이 정답이라는 것을 알고 있지만 매개 변수가 일반적으로 문자열 일 때 0이 작동한다는 것을 어떻게 알았습니까?!
Dave R

27
실제로 그것을 시도하기 위해 생각할 수있는 모든 것을 시도한 후에 시행 착오 :)
Matt Wilson

1
이것이 정확한 데이터베이스 사본을 작성합니까? 테이블 내용 포함?
Multitut

2
@ Multitut : 아니오 그것은 구조 만 할 것입니다.
Martin Clarke

6
누군가가 EfCore 에서이 작업을 수행하는 방법을 찾고 있고 나처럼 여기에서 끝난 경우를 대비하여 명령은 다음과 같습니다 dotnet ef migrations script. 설명서에 대한 자세한 내용 : docs.microsoft.com/en-us/ef/core/managing-schemas/migrations/…
Rafael Miceli

13

엔터티 프레임 워크 코어를 사용하는 사람이라면 여기까지입니다. 이것이 당신이하는 방법입니다.

# Powershell / Package manager console
Script-Migration

# Cli 
dotnet ef migrations script

-Fromand -To매개 변수를 사용하여 데이터베이스를 특정 버전으로 업데이트하는 업데이트 스크립트를 생성 할 수 있습니다 .

Script-Migration -From 20190101011200_Initial-Migration -To 20190101021200_Migration-2

https://docs.microsoft.com/en-us/ef/core/managing-schemas/migrations/#generate-sql-scripts

이 명령에는 몇 가지 옵션이 있습니다.

에서 마이그레이션 스크립트를 실행하기 전에 데이터베이스에 적용 마지막으로 마이그레이션해야합니다. 마이그레이션이 적용되지 않은 경우 0이를 지정하십시오 (기본값).

마이그레이션 스크립트를 실행 한 후 데이터베이스에 적용되는 마지막 마이그레이션입니다. 기본값은 프로젝트의 마지막 마이그레이션입니다.

나무 등의 스크립트를 선택적으로 생성 할 수 있습니다. 이 스크립트는 데이터베이스에 아직 적용되지 않은 마이그레이션 만 적용합니다. 이는 데이터베이스에 마지막으로 적용된 마이그레이션이 무엇인지 정확히 모르거나 각각 다른 마이그레이션에있을 수있는 여러 데이터베이스에 배포하는 경우에 유용합니다.


이것은 포인트로 작동합니다. 열 이름을 변경하기 시작하면 오류가 발생하기 시작하고 DacPac을 만드는 것이 더 나은 솔루션입니다. 특히 CI / CD에서 파이프 라인 사용을 시작할 때
Nick Turner

8

Matt wilson의 답변에 추가하기 위해 백업을 수행하지 않은 코드 우선 엔터티 클래스가 많았지 만 데이터베이스는 없었습니다. 따라서 Entity Framework 프로젝트에서 다음을 수행했습니다.

Visual Studio에서 패키지 관리자 콘솔을 열고 다음을 입력하십시오.

Enable-Migrations

Add-Migration

마이그레이션에 'Initial'과 같은 이름을 지정한 다음 마이그레이션을 작성하십시오. 마지막으로 다음을 입력하십시오.

Update-Database

Update-Database -Script -SourceMigration:0

마지막 명령은 엔터티 클래스에서 데이터베이스 테이블을 생성합니다 (엔티티 클래스가 제대로 구성된 경우).

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