Entity Framework
Inizializzatori di database
Ricerca…
CreateDatabaseIfNotExists
Implementazione di IDatabaseInitializer
che viene utilizzato in EntityFramework per impostazione predefinita. Come suggerisce il nome, crea il database se non esiste. Tuttavia, quando si modifica il modello, viene generata un'eccezione.
Uso:
public class MyContext : DbContext {
public MyContext() {
Database.SetInitializer(new CreateDatabaseIfNotExists<MyContext>());
}
}
DropCreateDatabaseIfModelChanges
Questa implementazione di IDatabaseInitializer
elimina e ricrea il database se il modello viene modificato automaticamente.
Uso:
public class MyContext : DbContext {
public MyContext() {
Database.SetInitializer(new DropCreateDatabaseIfModelChanges<MyContext>());
}
}
DropCreateDatabaseAlways
Questa implementazione di IDatabaseInitializer
elimina e ricrea il database ogni volta che viene utilizzato il contesto nel dominio dell'app delle applicazioni. Prestare attenzione alla perdita di dati dovuta al fatto che il database viene ricreato.
Uso:
public class MyContext : DbContext {
public MyContext() {
Database.SetInitializer(new DropCreateDatabaseAlways<MyContext>());
}
}
Inizializzatore del database personalizzato
È possibile creare la propria implementazione di IDatabaseInitializer
.
Esempio di implementazione di un inizializzatore, che migrerà il database a 0 e quindi migrerà fino alla migrazione più recente (utile ad esempio nell'esecuzione di test di integrazione). Per fare ciò è necessario anche un tipo 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
Un'implementazione di IDatabaseInitializer
che utilizzerà Code First Migrations per aggiornare il database alla versione più recente. Per usare questo inizializzatore devi usare DbMigrationsConfiguration
tipo DbMigrationsConfiguration
.
Uso:
public class MyContext : DbContext {
public MyContext() {
Database.SetInitializer(
new MigrateDatabaseToLatestVersion<MyContext, Configuration>());
}
}