Поиск…


CreateDatabaseIfNotExists

Реализация IDatabaseInitializer который по умолчанию используется в EntityFramework. Как следует из названия, он создает базу данных, если она не существует. Однако, когда вы меняете модель, она выдает исключение.

Использование:

public class MyContext : DbContext {
    public MyContext() {
        Database.SetInitializer(new CreateDatabaseIfNotExists<MyContext>());
    }
}

DropCreateDatabaseIfModelChanges

Эта реализация IDatabaseInitializer уменьшает и воссоздает базу данных, если модель автоматически изменяется.

Использование:

public class MyContext : DbContext {
    public MyContext() {
        Database.SetInitializer(new DropCreateDatabaseIfModelChanges<MyContext>());
    }
}

DropCreateDatabaseAlways

Эта реализация IDatabaseInitializer уменьшает и воссоздает базу данных каждый раз, когда ваш контекст используется в домене приложений приложений. Остерегайтесь потери данных из-за того, что база данных воссоздана.

Использование:

public class MyContext : DbContext {
    public MyContext() {
        Database.SetInitializer(new DropCreateDatabaseAlways<MyContext>());
    }
}

Пользовательский инициализатор базы данных

Вы можете создать свою собственную реализацию IDatabaseInitializer .

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

public class RecreateFromScratch<TContext, TMigrationsConfiguration> : 
IDatabaseInitializer<TContext>
where TContext : DbContext
where TMigrationsConfiguration : DbMigrationsConfiguration<TContext>, new()
{
    private readonly DbMigrationsConfiguration<TContext> _configuration;

    public RecreateFromScratch()
    {
        _configuration = new TMigrationsConfiguration();
    }

    public void InitializeDatabase(TContext context)
    {
        var migrator = new DbMigrator(_configuration);
        migrator.Update("0");
        migrator.Update();
    }
}

MigrateDatabaseToLatestVersion

Реализация IDatabaseInitializer которая будет использовать First First Migrations для обновления базы данных до последней версии. Чтобы использовать этот инициализатор, вы также должны использовать тип DbMigrationsConfiguration .

Использование:

public class MyContext : DbContext {
    public MyContext() {
        Database.SetInitializer(
            new MigrateDatabaseToLatestVersion<MyContext, Configuration>());
    }
}


Modified text is an extract of the original Stack Overflow Documentation
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow