Entity Framework
Inicializadores de bases de datos
Buscar..
CreateDatabaseIfNotExists
Implementación de IDatabaseInitializer
que se utiliza en EntityFramework de forma predeterminada. Como su nombre lo indica, crea la base de datos si no existe. Sin embargo, cuando se cambia el modelo, se produce una excepción.
Uso:
public class MyContext : DbContext {
public MyContext() {
Database.SetInitializer(new CreateDatabaseIfNotExists<MyContext>());
}
}
DropCreateDatabaseIfModelChanges
Esta implementación de IDatabaseInitializer
elimina y IDatabaseInitializer
crear la base de datos si el modelo cambia automáticamente.
Uso:
public class MyContext : DbContext {
public MyContext() {
Database.SetInitializer(new DropCreateDatabaseIfModelChanges<MyContext>());
}
}
DropCreateDatabaseSiempre
Esta implementación de IDatabaseInitializer
elimina y recrea la base de datos cada vez que se usa su contexto en el dominio de aplicación de aplicaciones. Tenga cuidado con la pérdida de datos debido al hecho de que la base de datos se vuelve a crear.
Uso:
public class MyContext : DbContext {
public MyContext() {
Database.SetInitializer(new DropCreateDatabaseAlways<MyContext>());
}
}
Inicializador de base de datos personalizado
Puede crear su propia implementación de IDatabaseInitializer
.
Ejemplo de implementación de un inicializador, que migrará la base de datos a 0 y luego migrará hasta la migración más reciente (útil, por ejemplo, cuando se ejecutan pruebas de integración). Para hacer eso necesitarías un tipo DbMigrationsConfiguration
también.
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
Una implementación de IDatabaseInitializer
que utilizará las migraciones de Code First para actualizar la base de datos a la última versión. Para usar este inicializador tienes que usar DbMigrationsConfiguration
tipo DbMigrationsConfiguration
.
Uso:
public class MyContext : DbContext {
public MyContext() {
Database.SetInitializer(
new MigrateDatabaseToLatestVersion<MyContext, Configuration>());
}
}