2017-05-19 1 views
0

저는 비교적 새로운 편입니다. 내 asp.net 웹 응용 프로그램을 프로덕션 IIS 서버에 게시하려고합니다. Visual Studio에서 파일 시스템 기반 게시를 선택합니다. 웹 배포는 해당 서버에서 지원되지 않기 때문입니다.파일 시스템을 사용하는 경우 첫 번째 마이 그 레이션 코드 게시

데이터베이스에서 코드 첫 마이그레이션을 사용합니다. 처음으로 또는 모든 테이블을 삭제하면 생산에 대한 배포가 정상적으로 작동합니다. 내가 생산 데이터를 기존의 테이블이 그러나 경우에, 나는 아래의 오류 얻을 -. "데이터베이스가 생성 된 이후 'ApplicationDbContext'컨텍스트를 백업 모델이 변경된 데이터베이스 업데이트하는 코드 첫 번째 마이그레이션을 사용하는 것이 좋습니다"

모델이 변경 될 때 자동 스키마 업데이트를 활성화하려면 어떻게합니까? "AutomaticMigrationsEnabled"내 Configuration.cs를 true로 설정했습니다. 내 global.asax 또는 Web.Config에 뭔가를 설정해야합니까? 내가 뭘 놓치고 있니?

내 로컬 서버에서 업데이트 데이터베이스를 실행할 수 있습니다. 모델 업데이트를 푸시 할 때마다 프로덕션 환경에서 자동으로이를 어떻게 만들 수 있습니까?


UPDATE :이 문제를 해결하는 가장 좋은 방법입니다 확실하지 않다 그러나 나는 할 수 있었다 이 Using Entity Framework (code first) migrations in production

의 단계에 따라 생산에 오류를 제거합니다. 또는 응용 프로그램이 시작될 때마다 프로덕션이이 줄을 계속 실행하기를 원하면요.

Database.SetInitializer<ApplicationDbContext>(new 
MigrateDatabaseToLatestVersion<ApplicationDbContext, Configuration>()); 

답변

0

MigrateDatabaseToLatestVersion을 사용하면 마이그레이션이 실제로 실행됩니다. 따라서 DbMigrator in code을 사용하거나 스크립트 (update-database -Script)를 생성하는 것과 같은 대안 중 하나가 필요합니다.

다음은 폴더에서 마이그레이션을 실행합니다. 문제는 구성에 AutomaticMigrationsEnabled = true이있는 것입니다. 이렇게하면 EF는 데이터베이스를 자동으로 업데이트하고 코드 기반 마이그레이션 파일을 만들지 않습니다.

몇 가지 해결책이 있습니다. 먼저 배포 (add-migration MyMigrationName)하기 전에 수동 마이그레이션을 추가하거나 이니셜 라이저를 CreateDatabaseIfNotExists과 같은 것으로 전환 한 다음 위와 같이 코드에서 마이그레이션을 호출 할 수 있습니다.

자세한 내용은 here을 참조하십시오.

관련 문제