5

내 응용 프로그램에서 일부 마이그레이션에서 코드 첫 마이그레이션을 사용할 수 있으며 통합 테스트에 SQL Server Compact를 사용합니다. Entity Framework 6 - 마이그레이션을 활성화 할 때 테이블을 만들지 않습니다.

내 테스트를 실행

는, 엔티티 프레임 워크는 빈 데이터베이스를 작성하고 The specified table does not exist.

this 보고서를 바탕으로 내가 엔티티 프레임 워크 6 마이그레이션의 사용이 변경되었습니다 생각 빈 데이터베이스에서 마이그레이션을 실행하고 던져하려고합니다.

나는 모든 데이터베이스 초기화 도구를 Context.Database.Create();으로 테스트하지만 모든 경우에 tabale은 생성되지 않습니다.

+0

마이그레이션이 항상 작동

  • 이 IdentityDbContex 클래스에 속성을 추가 모델을 만들 :

    은 다음 단계입니다. MigrateDatabaseToLatestVersion 이니셜 라이저가 필요합니다. –

  • +0

    테스트 한 결과 테이블이 생성되지 않았습니다. –

    답변

    14

    I 돈 :

    var migrator = new DbMigrator(new MyMigrationsConfiguration()); 
    migrator.Update(); 
    

    는 다른 방법이

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

    가 그것은 여기에 상세하게 설명되어 MigrateDatabaseToLatestVersion을 사용할 수 있습니다 : 당신이 DbMigrator.Update 방법을 사용할 필요가 최신 버전에 코드에서 데이터베이스를 업데이트하려면 이것이 EntityFramework의 버그인지는 모르지만, 마이그레이션 구성 클래스의 네임 스페이스를 기본 (Projectname/Migrations)에서 기본 이름으로 변경 한 경우 마이 그 레이션이 잘 작동합니다.

    +0

    OMG 정말 작동합니다 ... – TamarG

    +0

    실제로 작동합니다. 네임 스페이스를 변경하는 것만으로는 충분하지 않을 수도 있으며 클래스 이름도 변경할 수 있습니다. 런타임에 어떤 종류의 이름 충돌이있는 것 같습니다 ... – Jerther

    +0

    그건 정말 기괴합니다. 그것은 나를 위해 일했습니다. 이것이 왜 효과가 있는지에 대한 설명이 있습니까? – digitalmonkey

    -1

    모델을 추가하고 추가 마이그레이션 명령을 실행할 때 발생합니다.

    IdentityDbContex 클래스에 새로 추가 된 모델 속성을 추가 : 여기

    이 문제의 가장 단순한 원인이다.

    1. 실행 추가 마이그레이션
    2. 갱신 데이터베이스