Szukaj…


CreateDatabaseIfNotExists

Implementacja IDatabaseInitializer używanego domyślnie w EntityFramework. Jak sama nazwa wskazuje, tworzy bazę danych, jeśli nie istnieje. Jednak zmiana modelu powoduje wyjątek.

Stosowanie:

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

DropCreateDatabaseIfModelChanges

Ta implementacja IDatabaseInitializer upuszcza i odtwarza bazę danych, jeśli model zmienia się automatycznie.

Stosowanie:

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

DropCreateDatabaseAlways

Ta implementacja IDatabaseInitializer i odtwarza bazę danych za każdym razem, gdy kontekst jest używany w domenie aplikacji aplikacji. Uwaga na utratę danych spowodowaną odtwarzaniem bazy danych.

Stosowanie:

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

Niestandardowy inicjator bazy danych

Możesz stworzyć własną implementację IDatabaseInitializer .

Przykładowa implementacja inicjalizatora, który przeprowadzi migrację bazy danych do 0, a następnie migrację do najnowszej migracji (przydatne np. Podczas uruchamiania testów integracyjnych). W tym celu potrzebujesz również typu 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

Implementacja IDatabaseInitializer która będzie korzystać z Code First Migrations do aktualizacji bazy danych do najnowszej wersji. Aby użyć tego inicjalizatora, musisz również użyć typu DbMigrationsConfiguration .

Stosowanie:

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


Modified text is an extract of the original Stack Overflow Documentation
Licencjonowany na podstawie CC BY-SA 3.0
Nie związany z Stack Overflow