2012-11-02 19 views
6

Ben kötü soru ifadeli olabilir ama benim global.asx dosyasında i Bu ayıklayıcı takılı olmadığını kontrol eder ve benim kabul testleri hep geçmesi, böylece benim test mibzer çalışırBir veri tabanının Entity Framework'den olup olmadığını kontrol etmek için bir komut var mı?

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

kullanın.

Ben veritabanı yanı var olup olmadığını kontrol etmeniz gerekir ve eğer ilk bu kodu çalıştırın:

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

Bu dataseeder daima veritabanında olmak zorunda gerçek verilerdir. Bu kod bloğunu çalıştırabilmek için veritabanının mevcut olup olmadığını kontrol etmek için bir komut var mı. Teşekkürler!

cevap

14

Database.Exists yöntemi sizin için çalışacak mı?

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

Düzenleme 1. comment tam olarak istediğiniz yapmalı

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

cevap. Global.asax dosyanıza ...

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

Belki nasıl kullanıldığını gösteren örnekleri görebiliyor musunuz? Çevremdeyim ve hiçbir şey bulamadım – Robert

+0

Testlerimde genellikle bir veri tabanına, bir bellek içi HTTP sunucusuna, vb. Gibi şeyleri yapabilen bir TestHelper sınıfına sahibim. Bu yüzden test fikstür kurulumumdan Tam olarak yukarıdaki kod olan TestHelper.CreateDatabase() '. Sonra benim test fikstürü teardown, ben 'TestHelper.DestroyDatabase() 'diyoruz. Gerçekten bu kadar kolay. –

+0

Bunun tam olarak aradığım şey olduğunu düşünmüyorum. Global.asx dosyasında, veritabanının var olup olmadığını ve ekim makinesini çalıştırmıyor olup olmadığını kontrol eden bir şeye erişmeyi umuyordum. Bunu yaparsa, – Robert

İlgili konular