Entity Framework применяет миграции во время выполнения

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

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

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


person hyperar    schedule 19.12.2016    source источник
comment
Вы проверили эту SO QA? особенно эта ссылка, которая использует DB Migrator. Он по-прежнему доступен в EF 6, поэтому это может иметь отношение к вашему вопросу ..   -  person Bagus Tesa    schedule 19.12.2016
comment
Кажется, это именно то, что я искал, спасибо!!   -  person hyperar    schedule 19.12.2016


Ответы (1)


попробуйте этот Initializer: System.Data.Entity.MigrateDatabaseToLatestVersion, он обновит вашу базу данных (без удаления базы данных, без удаления данных), просто обновите измененный объект.

Database.SetInitializer(new MigrateDatabaseToLatestVersion<T, DbMigrationsConfiguration<T>>());
        try
        {
            using (var ctx = new T())
            {
                ctx.Database.Initialize(true);
            }
        }
        catch (Exception e)
        {
        }
person Rick    schedule 19.12.2016
comment
Я использовал вариант того, что вы предложили. Database.SetInitializer<ObjectContext>( new MigrateDatabaseToLatestVersion<ObjectContext, Configuration>()); - person hyperar; 19.12.2016
comment
Просто очень небольшая придирка ... пустые блоки захвата - это не конец неприятностям ... - person speciesUnknown; 11.10.2018
comment
@gburton на самом деле это только начало другого. - person Ulysses Alves; 05.11.2018