2016-12-19 3 views
0

Entity Framework Code First를 사용하는 C# WinForms 응용 프로그램을 만들고 있는데, 존재하지 않는 경우 데이터베이스를 만들도록 설정되어 있습니다.Entity Framework는 런타임에 마이그레이션을 적용합니다.

앱이 데이터베이스와 함께 배포되지 않기 때문에 필요에 따라 앱이 만들어 지므로 새로운 버전의 앱을 출시 할 때 각각의 경우에 어떤 마이그레이션을 적용해야하는지 감지하는 방법을 찾아야합니다.

런타임에 필요한 마이그레이션을 감지하고 적용하려면 어떻게해야합니까?

+1

당신이 사용하는 [이 SO QA?] (http://stackoverflow.com/questions/35144784/how-to-use-migration-programmatically-in-entityframework-codefirst) 특히 [이 링크를 확인했다 DB 이주자] (https://romiller.com/2012/02/09/running-scripting-migrations-from-code/). [EF 6] (https://github.com/aspnet/EntityFramework6/blob/master/src/EntityFramework/Migrations/DbMigrator.cs)에서 계속 사용할 수 있으므로 질문과 관련 될 수 있습니다. –

+0

정확히 내가 뭘 찾고 있었는지, 고마워! – hyperar

답변

1

이 초기화 프로그램을 사용해보십시오 : System.Data.Entity.MigrateDatabaseToLatestVersion, 데이터베이스를 업데이트합니다 (삭제 DB 없음, 데이터 삭제 안 함). 업데이트 엔티티 만 변경되었습니다.

Database.SetInitializer(new MigrateDatabaseToLatestVersion<T, DbMigrationsConfiguration<T>>()); 
     try 
     { 
      using (var ctx = new T()) 
      { 
       ctx.Database.Initialize(true); 
      } 
     } 
     catch (Exception e) 
     { 
     } 
+0

제안한 내용의 변형을 사용했습니다. 'Database.SetInitializer ( 새로운 MigrateDatabaseToLatestVersion ());' – hyperar