2012-11-02 11 views
6

Forse ho formulato la domanda scarsa, ma nel mio file global.asx io usoEsiste un comando per verificare se esiste un database da Entity Framework?

if (System.Diagnostics.Debugger.IsAttached) 
     { 
      var test = new TestDbSeeder(App_Start.NinjectWebCommon.UcxDbContext); 
      test.seed(); 
     } 

Questo controlla se il debugger è collegato e corre mia prova seminatrice in modo che i miei test di accettazione passano sempre.

ho bisogno di controllare per vedere se il database esiste come bene e se non eseguire questo codice prima:

var test2 = new DataSeeder(); 
    test2.Seed(App_Start.NinjectWebCommon.UcxDbContext); 

Questa dataseeder sono i dati reali che deve essere sempre nel database. Esiste un comando per verificare se il database esiste in modo che io possa eseguire quel blocco di codice. Grazie!

risposta

14

Il metodo Database.Exists funzionerà per voi?

if (!dbContext.Database.Exists()) 
    dbContext.Database.Create(); 

Modifica # 1 per rispondere commento

public class DatabaseBootstrapper 
{ 
    private readonly MyContext context; 

    public DatabaseBootstrapper(MyContext context) 
    { 
     this.context = context; 
    } 

    public void Configure() 
    { 
     if (context.Database.Exists()) 
      return; 

     context.Database.Create(); 
     var seeder = new Seeder(context); 
     seeder.SeedDatabase(); 
    } 
} 

che dovrebbe fare esattamente quello che vuoi. Nel tuo file global.asax ...

public void Application_Start() 
{ 
    var context = ...; // get your context somehow. 
    new DatabaseBootstrapper(context).Configure(); 
} 
+0

Forse sai dove posso vedere esempi di come viene utilizzato? Io sto cercando su Google e non ho trovato nulla su di esso – Robert

+0

Di solito ho una classe TestHelper nei miei test che può fare cose come stare in piedi su un database, un server HTTP in memoria, ecc. Quindi, dalla mia installazione di prova, posso chiamare 'TestHelper.CreateDatabase()', che è esattamente il codice sopra. Poi nel mio apparecchio di prova teardown, chiamo 'TestHelper.DestroyDatabase()'. È letteralmente così facile. –

+0

Non penso che sia proprio quello che sto cercando. Speravo di accedere a qualcosa nel file global.asx che ha controllato per vedere se il database esiste e se non esegue quindi la mia seminatrice. Se lo fa, salta il passaggio – Robert

Problemi correlati