Entity Framework
Initierare av databaser
Sök…
CreateDatabaseIfNotExists
Implementering av IDatabaseInitializer
som används i EntityFramework som standard. Som namnet antyder skapar det databasen om ingen finns. Men när du byter modell, kastar det ett undantag.
Användande:
public class MyContext : DbContext {
public MyContext() {
Database.SetInitializer(new CreateDatabaseIfNotExists<MyContext>());
}
}
DropCreateDatabaseIfModelChanges
Denna implementering av IDatabaseInitializer
tappar och återskapar databasen om modellen ändras automatiskt.
Användande:
public class MyContext : DbContext {
public MyContext() {
Database.SetInitializer(new DropCreateDatabaseIfModelChanges<MyContext>());
}
}
DropCreateDatabaseAlways
Denna implementering av IDatabaseInitializer
tappar och återskapar databasen varje gång ditt sammanhang används i applikations-appdomänen. Se upp för dataförlusten på grund av att databasen återskapas.
Användande:
public class MyContext : DbContext {
public MyContext() {
Database.SetInitializer(new DropCreateDatabaseAlways<MyContext>());
}
}
Anpassad databasinitierare
Du kan skapa din egen implementering av IDatabaseInitializer
.
Exempel på implementering av en initialisator, som kommer att migrera databasen till 0 och sedan migrera hela vägen till den senaste migreringen (användbar t.ex. när du kör integrationstester). För att göra det behöver du också en 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
En implementering av IDatabaseInitializer
som kommer att använda Code First Migrations för att uppdatera databasen till den senaste versionen. För att använda den här initialiseraren måste du också använda DbMigrationsConfiguration
typen.
Användande:
public class MyContext : DbContext {
public MyContext() {
Database.SetInitializer(
new MigrateDatabaseToLatestVersion<MyContext, Configuration>());
}
}