2013-03-01 19 views
35

Entity Framework v4 kullanıyorum. Nerd Dinner tutorial'daki talimatları takip ettim. Şu anda geliştirme modundayım (herhangi bir yüksek ortama yayılmamış) ve her yeni dağıtımda tabloların yeniden oluşturulmasını istiyorum, çünkü modeller hala çok uçucu ve veri tutmayı umursamıyorum. Ancak, bu gerçekleşmez. Tablolar oluşturulmadı/değiştirilmedi veya DB'ye bir şey olmuyor. Paket Yöneticisi komutlarını kullanarak bir geçiş modeline geçersem: geçişleri etkinleştir, geçişi (ilk), bu çalışır ve geçişlerimi kullanır. Bununla birlikte, henüz granüler geçişlere sahip olmak istemediğim ve yalnızca ilk oluşturma komutumun olmasını istemediğimden, geçişler klasörünü silmeye, komutları yeniden yüklemeye (geçişleri etkinleştirme, ekleme-taşıma) ve veritabanını her zaman el ile silme zorunluluğum var. Ben her şeyi değiştiririm.Kod İlk Bırakma-Oluşturma modunda Entity Framework'ü nasıl kullanırım?

Kodun ilk oluşma davranışını nasıl oluşturabilirim?

cevap

50

Veritabanınız için DropCreateDatabaseAlways başlatıcısını kullanın.

public class MyInitializer : DropCreateDatabaseAlways<YourContextName> 
{ 
    protected override void Seed(MagnateContext context) 
    { 
     // seed database here 
    } 
} 

: Aslında daha sonra DropCreateDatabaseAlways miras olacak kendi başlatıcı, oluşturma veritabanınızı tohum istiyorsanız

Database.SetInitializer(new DropCreateDatabaseAlways<YourContextName>()); 

: Her zaman ilk uygulama etki alanında bağlamda kullanımı sırasında veritabanını baştan yaratacak ve bağlamda

Database.SetInitializer(new MyInitializer()); 
+1

Yalnızca veritabanı mevcut değilse çalışır. Veritabanı varsa ve modelimde değişiklikler yapıyorumsa, hiçbir şey olmaz. Ayrıca sözdizimi şöyledir: Database.SetInitializer (yeni DropCreateDatabaseAlways ()); –

+1

@RyanLangton nope, veri tabanına düşecek ve oluşturulacaktır. –

+2

Aslında haklısınız. Ancak uygulama içinde bir sorguyu icra edene kadar gerçekleşmedi. Sadece uygulamayı başlatırsam, hiçbir şey olmaz. İlginç davranışlar. –

0

veritabanı zaten varsa ilk kullanımdan önce ayarlayın ve size modelde değişiklik yapmak istiyorum, senkullanmak

İlgili konular