2012-11-02 15 views
6

może ja źle sformułowane pytanie, ale w moim pliku global.asx używamCzy istnieje polecenie sprawdzenia, czy istnieje baza danych z Entity Framework?

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

ten sprawdza, czy jest podłączony i działa debugger mojego testu siewnik tak, że moje testy akceptacyjne zawsze przechodzą.

muszę sprawdzić, czy baza danych istnieje, jak również i jeśli nie uruchomić ten kod najpierw:

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

Ten dataseeder jest rzeczywiste dane, które muszą znajdować się w bazie danych. Czy istnieje polecenie sprawdzenia, czy baza danych istnieje, aby móc uruchomić ten blok kodu. Dzięki!

Odpowiedz

14

Czy metoda Database.Exists zadziała dla Ciebie?

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

Edit # 1 odpowiedzieć na komentarz

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(); 
    } 
} 

To powinno zrobić dokładnie to, co chcesz. W Twoim pliku global.asax ...

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

Może wiesz, gdzie mogę zobaczyć przykłady użycia? Szukam google i nie znalazłem nic na tym – Robert

+0

Zazwyczaj w testach mam klasę TestHelper, która może wykonywać operacje takie jak wstawianie bazy danych, serwer HTTP w pamięci itp. Tak więc od konfiguracji mojego urządzenia testowego mogę zadzwonić 'TestHelper.CreateDatabase()', który jest dokładnie powyższym kodem. Następnie w mojej testowej utracie urządzenia nazywam 'TestHelper.DestroyDatabase()'. Jest to dosłownie takie proste. –

+0

Nie sądzę, że jest to coś, czego szukam. Miałem nadzieję uzyskać dostęp do czegoś w pliku global.asx, który sprawdził, czy istnieje baza danych, a jeśli nie, to uruchom mój siewnik. Jeśli tak, pomiń krok – Robert

Powiązane problemy