2016-12-19 2 views
0

Я создаю приложение C# WinForms, которое использует Entity Framework Code First, и оно настроено на создание базы данных, если она не существует.Entity Framework применяет миграции во время выполнения

Поскольку приложение не распространяется с базой данных, оно создает его, когда оно необходимо, поэтому мне нужно найти способ определить, какие миграции необходимо применять для каждого случая, когда я выпускаю новую версию приложения.

Как я могу обнаружить и применить необходимые миграции во время выполнения?

+1

вы проверили [это SO QA?] (Http://stackoverflow.com/questions/35144784/how-to-use-migration-programmatically-in-entityframework-codefirst) особенно [эту ссылку, которая использует DB Migrator] (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

Смежные вопросы