3

EF 마이그레이션이 활성화되어 있고 azure에서 실행중인 기존 데이터베이스를 업데이트하려고합니다. 나는 응용 프로그램을 실행할 때 나는 다음과 같은 예외가 얻을 : 'System.InvalidOperationException' EntityFramework.dll에서 발생했지만 사용자 코드에서 처리되지 않은 유형의EF 마이그레이션이 데이터베이스를 자동으로 업데이트하지 않습니다.

예외를

추가 정보 : 모델은 백업 데이터베이스가 작성된 후 'MyContext'컨텍스트에 이 변경되었습니다. 코드 첫 번째 마이그레이션을 사용하여 데이터베이스를 업데이트하는 것을 고려하십시오 (http://go.microsoft.com/fwlink/?LinkId=238269).

그러나 마이그레이션을 사용할 수 있습니다.

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

그리고

internal sealed class Configuration : DbMigrationsConfiguration<MyContext> 
{ 
    public Configuration() 
    { 
     AutomaticMigrationsEnabled = false;//have also tried true 
    } 
} 

이 최신 예상대로 모든 것이 자동으로 작동하고 내가 초기화 코드를 변경하지 않은 커밋까지 (단 새로운 마이그레이션을 추가).

데이터베이스를 다운로드하고 앱을 실행하면 동일한 결과가 나타납니다. 그러나 수동으로 실행하면 Update-Database 모든 것이 예상대로 작동합니다.

Azure에서 업데이트 데이터베이스를 실행할 수 없기 때문에이 코드를 실행하는 방법이 있습니까?

+0

'AutomaticMigrationsEnabled = true'? – Dennis

+0

나는 그것을 시도했다. 그것은 설정이 마이 그 레이션 파일없이 자동적으로 업데이트하는 것임을 확신한다. –

+0

틀린거야 ...'AutomaticMigrationsEnabled'는 컨텍스트 초기화 또는 수동으로'Update 데이터베이스. 물론 사용자 계정에 데이터베이스 스키마를 업데이트 할 수있는 충분한 권한이있는 경우 자동 마이그레이션을 적용 할 수 있습니다. * AutomaticMigrationsEnabled = true로 정확히 * 작동하지 않는 것은 무엇입니까? – Dennis

답변

2

내 바보 같은 실수를 발견했습니다. 초기화 코드를 변경하지 않았지만 등록을 취소하여 불렀다는 것을 알았습니다.

내 컨텍스트에서 정적 생성자로 이동했는데 모두 만족했습니다.

static MyContext() 
{ 
    Database.SetInitializer(new MigrateDatabaseToLatestVersion<MyContext, Configuration>()); 
}