Sto utilizzando le migrazioni di Entity Framework Code First e ho uno scenario in cui voglio eseguire una suite di test di integrazione. Ogni volta che i test eseguiti, voglio ricreare il database, e applicare tutte le migrazioniEF 5, codice dapprima - Creare un nuovo database ed eseguire tutte le migrazioni a livello di programmazione
I passaggi dovrebbero essere:
- Eliminare il database di prova esistente (se presente)
- creare un nuovo test database e applicare tutte le migrazioni
- dati Seed
si tratta di un progetto esistente che ho migrazioni aggiunto a, e ho usato le Enable-migrazioni comando per creare una migrazione "InitialCreate" th contiene codice per aggiungere tutte le tabelle al mio database.
Il codice nel mio costume IDatabaseInitializer
è la seguente:
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();
}
Il Up
metodo della mia migrazione InitialCreate non è sempre chiamato da questo codice, che non è quello che mi aspettavo. Invece, tutte le tabelle vengono create quando viene chiamato il metodo Database.Create()
. Ho bisogno di eseguire la migrazione InitialCreate perché ho un codice aggiuntivo in là per creare stored procedure.
Quindi le mie domande sono, come posso creare un nuovo database a livello di codice ed eseguire tutte le migrazioni (inclusa la migrazione di InitialCreate)?