Entity Framework
Инициализаторы баз данных
Поиск…
CreateDatabaseIfNotExists
Реализация IDatabaseInitializer
который по умолчанию используется в EntityFramework. Как следует из названия, он создает базу данных, если она не существует. Однако, когда вы меняете модель, она выдает исключение.
Использование:
public class MyContext : DbContext {
public MyContext() {
Database.SetInitializer(new CreateDatabaseIfNotExists<MyContext>());
}
}
DropCreateDatabaseIfModelChanges
Эта реализация IDatabaseInitializer
уменьшает и воссоздает базу данных, если модель автоматически изменяется.
Использование:
public class MyContext : DbContext {
public MyContext() {
Database.SetInitializer(new DropCreateDatabaseIfModelChanges<MyContext>());
}
}
DropCreateDatabaseAlways
Эта реализация IDatabaseInitializer
уменьшает и воссоздает базу данных каждый раз, когда ваш контекст используется в домене приложений приложений. Остерегайтесь потери данных из-за того, что база данных воссоздана.
Использование:
public class MyContext : DbContext {
public MyContext() {
Database.SetInitializer(new DropCreateDatabaseAlways<MyContext>());
}
}
Пользовательский инициализатор базы данных
Вы можете создать свою собственную реализацию IDatabaseInitializer
.
Пример реализации инициализатора, который будет переносить базу данных на 0, а затем полностью переносится на самую новую миграцию (например, при выполнении интеграционных тестов). Для этого вам понадобится тип 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
Реализация IDatabaseInitializer
которая будет использовать First First Migrations для обновления базы данных до последней версии. Чтобы использовать этот инициализатор, вы также должны использовать тип DbMigrationsConfiguration
.
Использование:
public class MyContext : DbContext {
public MyContext() {
Database.SetInitializer(
new MigrateDatabaseToLatestVersion<MyContext, Configuration>());
}
}