Entity Framework
Initialiseurs de base de données
Recherche…
CreateDatabaseIfNotExists
Implémentation de IDatabaseInitializer
utilisée par défaut dans EntityFramework. Comme son nom l'indique, il crée la base de données si aucune n'existe. Cependant, lorsque vous modifiez le modèle, il génère une exception.
Usage:
public class MyContext : DbContext {
public MyContext() {
Database.SetInitializer(new CreateDatabaseIfNotExists<MyContext>());
}
}
DropCreateDatabaseIfModelChanges
Cette implémentation de IDatabaseInitializer
supprime et recrée la base de données si le modèle change automatiquement.
Usage:
public class MyContext : DbContext {
public MyContext() {
Database.SetInitializer(new DropCreateDatabaseIfModelChanges<MyContext>());
}
}
DropCreateDatabaseAlways
Cette implémentation de IDatabaseInitializer
supprime et recrée la base de données chaque fois que votre contexte est utilisé dans le domaine d'application des applications. Méfiez-vous de la perte de données due au fait que la base de données est recréée.
Usage:
public class MyContext : DbContext {
public MyContext() {
Database.SetInitializer(new DropCreateDatabaseAlways<MyContext>());
}
}
Initialiseur de base de données personnalisé
Vous pouvez créer votre propre implémentation d' IDatabaseInitializer
.
Exemple d'implémentation d'un initialiseur, qui va migrer la base de données vers 0, puis migrer jusqu'à la migration la plus récente (utile, par exemple, lors de l'exécution de tests d'intégration). Pour ce faire, vous avez également besoin d'un type 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
Une implémentation de IDatabaseInitializer
qui utilisera Code First Migrations pour mettre à jour la base de données vers la dernière version. Pour utiliser cet initialiseur, vous devez également utiliser le type DbMigrationsConfiguration
.
Usage:
public class MyContext : DbContext {
public MyContext() {
Database.SetInitializer(
new MigrateDatabaseToLatestVersion<MyContext, Configuration>());
}
}