Entity Framework
Inicjatory baz danych
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>());
}
}