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>());
    }
}


Modified text is an extract of the original Stack Overflow Documentation
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow