2016-06-08 1 views
4

Entity Framework (6.1.1)에 마이그레이션을 설정했습니다.

Update-Database –TargetMigration: $InitialDatabase 

하지만 내 코드에서이 작업을 수행 할 수있는 방법 : 나는 완전히 비어있는 데이터베이스를 재설정 패키지 관리자 콘솔에서 다음 명령을 실행할 수 있습니다 알아? 당신이 당신의 마이그레이션 ID를 모르는 경우

+0

이 요구 사항을 둘러싼 유스 케이스에 대해 조금 설명 할 수 있습니까? 추가 작업을 실행하기 위해 이전 시스템에 연결하려고합니까? 'DbContext.Database.Delete(); DbContext.Database.Initialize (true);'는 데이터베이스를 삭제하고 다시 만듭니다. 그러나 이것이 현재인지 여부는 불분명합니다. – Gusdor

+0

@ Gusdor : 많은 양의 마이그레이션을 방지하기 위해 버전 별 릴리스 당 하나의 마이그레이션이 있습니다. 알파 테스트를 진행할 때 첫 번째 알파 출시 이후에 버전이 지정된 마이 그 레이션에 뭔가를 추가 할 수 있습니다. 다음 알파 버전 (또는 베타)을 릴리스 할 때 이미 적용된 버전이있는 마이 그 레이션에 대한 변경 사항이있을 수 있으므로 데이터베이스를 $ InitialDatabase로 재설정해야합니다. 그렇지 않으면 EF에서 이미 적용 되었기 때문에 마이그레이션이 적용되지 않습니다. 테이블과 마이 그 레이션간에 불일치가 있습니다. – GTHvidsten

+0

@GTHvidsten 내 문제로 문제가 해결 되었습니까? –

답변

3
 var configuration = new MyDbConfiguration(); 
     configuration.TargetDatabase = new DbConnectionInfo(
      "Server=MyServer;Database=MyDatabase;Trusted_Connection=True;", 
      "System.Data.SqlClient"); 

     var migrator = new DbMigrator(configuration); 
     migrator.Update("201606030938116_InitialDatabase"); 

당신은 다만 할 수 있습니다

migrator.GetDatabaseMigrations().First(); 

나 :
당신의 DbConfiguration에서

migrator.GetLocalMigrations().First(); 

당신이 자동 낙하을 허용해야한다 :

public class MyDbConfiguration: DbMigrationsConfiguration<MyDbContext> 
    { 
    public MyDbConfiguration() 
    { 
     this.AutomaticMigrationsEnabled = true; 
     this.AutomaticMigrationDataLossAllowed = true; 
    } 
    } 
@GTHvidsten에서3210

업데이트 :

대신 사용할 수있는 마이그레이션을 받고, 당신은이 명령을 사용해야합니다 : migrator.Update (DbMigrator.InitialDatabase를); 그러나 MyDbConfiguration의 ContextKey 속성을 Package Manager에서 만든 Configuration 개체에서 사용 된 ContextKey 속성과 일치하도록 설정해야합니다. 둘 다 내 데이터베이스가 비게됩니다.

+0

이 작업을 수행 할 수 없습니다. 그것은 마이 그 레이션을 발견하지만'migrator.Update (migrator.GetLocalMigrations(). First()) '할 때 "데이터베이스에 SomeTable이라는 객체가 이미 있습니다."라는 오류가 발생합니다. 패키지 관리자를 통해 생성 된 원래의 Migration Configuration 객체는 'ContextKey'속성에 값을 설정했습니다. MyDbConfiguration에 같은 값을 설정하려고했습니다. 이로 인해 오류가 사라지지만'Update()'호출에서 아무 일도 일어나지 않습니다. 데이터베이스는 이전과 완전히 동일합니다. – GTHvidsten

+0

좋아, 나는 그것이 작동하도록 생각한다. 사용 가능한 마이그레이션을 얻는 대신에'migrator.Update (DbMigrator.InitialDatabase);'명령을 사용해야합니다. 그러나 패키지 관리자가 생성 한 Configuration 객체에서 사용 된 것과 일치하도록'MyDbConfiguration'에'ContextKey' 속성을 설정해야합니다. 둘 다 내 데이터베이스가 비게됩니다. – GTHvidsten

+0

좋은 소식) 답으로 표시하시오 –

관련 문제