원격 대상에서 EF 코드 첫 번째 마이그레이션을 초기화하는 방법
-
11-12-2019 - |
문제
코드 첫 번째 마이그레이션을 프로젝트에 도입하고 싶지만 테스트를 위해이 클라이언트 에게이 전개를 처리하는 방법을 확신하지 못합니다.지금까지는 상황이 매우 간단 해졌으며 방금 CreateDatabaseIfNotExists
Initializer를 사용했습니다.자, 두 개의 시나리오가 있습니다.
-
그는 기존, 이전 마이그레이션, 데이터베이스를 삭제하고 이니셜 라이저를 사용하여 새, 마이그레이션, 데이터베이스를 만들고, 여기에서 이주를 사용하여 데이터베이스를 업그레이드합니다.
MigrateDatabaseToLatestVersion
이니셜 라이저를 사용하여 누락 된 경우 DB를 만들 수 있습니까? -
방금 코드를 배포하고 마이그레이션을 수행하도록하십시오.
MigrateDatabaseToLatestVersion
를 사용하는 것이지만 여기에 필요한 것이 없으면 확실하지 않습니다.이전 마이그레이션 데이터베이스를 마이그레이션에 적합한 하나로 업그레이드 할 것입니까?
해결책
이것은 자동 마이그레이션이 필요할 때 수행하는 것입니다.나는 이것이 당신이 해결책을 찾는 데 도움이되기를 바랍니다.
Database.SetInitializer(
new MigrateDatabaseToLatestVersion<ContextFileName, PathToMigrationsConfig>()
);
Database.Initialize(false);
.
마이그레이션의 구성 파일에서는 생성자 다음을 설정합니다.
AutomaticMigrationsEnabled = true;
AutomaticMigrationDataLossAllowed = false;
.
구성 파일에서 시드 메소드의 재정의가 있어야합니다. 그렇지 않은 경우 시드 데이터를 채울 수 있으면
위의 데이터가 발생하지 않는 한 데이터베이스를 최신으로 최신으로 생성 / 업그레이드하는 것입니다.이렇게하면 클라이언트에 코드를 손을 뗍니다.
사이드 메모에서는 생산 시스템의 경우 일반적으로이를 수행하지 않는 지점을 논할 것입니다.이것은 많은 단점이있었습니다.데이터베이스의 경우 Control이 없으면 생성 된 스크립트 파일을 거부 한 클라이언트를 아직 찾지 못했습니다.
패키지 관리자 콘솔을 통해 마이그레이션을 추가 한 후 다음 명령을 사용 하여이 작업을 수행 할 수 있습니다.
Update-database –script -verbose
.