Entity Framework
Datenbankinitialisierer
Suche…
CreateDatabaseIfNotExists
Implementierung von IDatabaseInitializer
, die standardmäßig in EntityFramework verwendet wird. Wie der Name schon sagt, erstellt er die Datenbank, wenn keine vorhanden ist. Wenn Sie jedoch das Modell ändern, wird eine Ausnahme ausgelöst.
Verwendungszweck:
public class MyContext : DbContext {
public MyContext() {
Database.SetInitializer(new CreateDatabaseIfNotExists<MyContext>());
}
}
DropCreateDatabaseIfModelChanges
Diese Implementierung von IDatabaseInitializer
die Datenbank und erstellt sie neu, wenn das Modell automatisch geändert wird.
Verwendungszweck:
public class MyContext : DbContext {
public MyContext() {
Database.SetInitializer(new DropCreateDatabaseIfModelChanges<MyContext>());
}
}
DropCreateDatabaseAlways
Bei dieser Implementierung von IDatabaseInitializer
die Datenbank jedes Mal IDatabaseInitializer
und neu erstellt, wenn Ihr Kontext in der Anwendungs-App-Domäne verwendet wird. Beachten Sie den Datenverlust aufgrund der Tatsache, dass die Datenbank neu erstellt wird.
Verwendungszweck:
public class MyContext : DbContext {
public MyContext() {
Database.SetInitializer(new DropCreateDatabaseAlways<MyContext>());
}
}
Benutzerdefinierter Datenbankinitialisierer
Sie können Ihre eigene Implementierung von IDatabaseInitializer
.
Beispielimplementierung eines Initialisierers, der die Datenbank auf 0 migriert und dann bis zur neuesten Migration (z. B. beim Ausführen von Integrationstests) vollständig migriert Dazu benötigen Sie auch einen DbMigrationsConfiguration
Typ.
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
Eine Implementierung von IDatabaseInitializer
, die Code First Migrations zum Aktualisieren der Datenbank auf die neueste Version verwendet. Um diesen Initialisierer verwenden zu können, müssen Sie auch den Typ DbMigrationsConfiguration
verwenden.
Verwendungszweck:
public class MyContext : DbContext {
public MyContext() {
Database.SetInitializer(
new MigrateDatabaseToLatestVersion<MyContext, Configuration>());
}
}