Я использую миграции Entity Framework Code First, и у меня есть сценарий, в котором я хочу запустить набор интеграционных тестов. Каждый раз при запуске тестов я хочу воссоздавать базу данных и применять все миграции.
Шаги должны быть:
- Отбросьте существующую тестовую базу данных (если есть)
- Создайте новую тестовую базу данных и примените все миграции.
- Данные о семенах
Это существующий проект, в который я добавил миграции, и я использовал команду Enable-Migrations для создания миграции «InitialCreate», содержащей код для добавления всех таблиц в мою базу данных.
Код в моем пользовательском IDatabaseInitializer
выглядит следующим образом:
public void InitializeDatabase(MyContext context)
{
//delete any existing database, and re-create
context.Database.Delete();
context.Database.Create();
//apply all migrations
var dbMigrator = new DbMigrator(new Configuration());
dbMigrator.Update();
//seed with data
this.Seed(context);
context.SaveChanges();
}
Метод Up
моей миграции InitialCreate не вызывается этим кодом, чего я не ожидал. Вместо этого все таблицы создаются при вызове метода Database.Create()
. Мне нужно запустить миграцию InitialCreate, потому что у меня есть дополнительный код для создания хранимых процедур.
Итак, мой вопрос: как мне программно создать новую базу данных и запустить все миграции (включая миграцию InitialCreate)?