Używam Entity Framework Code First migrations, i mam scenariusz, w którym chcę uruchomić zestaw testów integracyjnych. Za każdym razem próby uruchomienia, chcę, aby ponownie utworzyć bazę danych, i zastosować wszystkie migracjeEF 5, Code First - Utwórz nową bazę danych i uruchom wszystkie migracje programowo
Kroki powinny być:
- Kropla istniejąca baza danych badania (jeżeli występują)
- Utwórz nowy test bazy danych i zastosować wszystkie migracje
- dane Seed
jest to istniejący projekt, który dodałem do migracji, i użyłem enable-migracje polecenie, aby utworzyć „InitialCreate” migracji th zawiera kod, aby dodać wszystkie tabele do mojej bazy danych.
Kod w moim zwyczaju IDatabaseInitializer
jest następujący:
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
metoda mojego InitialCreate migracji nie jest uzyskiwanie nazywany przez ten kod, który nie jest to, czego się spodziewałem. Zamiast tego wszystkie tabele są tworzone po wywołaniu metody Database.Create()
. Potrzebuję migracji InitialCreate, ponieważ mam dodatkowy kod do tworzenia procedur składowanych.
Moje pytanie brzmi: w jaki sposób programowo utworzyć nową bazę danych i uruchomić wszystkie migracje (w tym migrację InitialCreate)?