2012-06-24 12 views
6

Veritabanımla bazı ilişkileri olan ve daha sonra Add-Migration çalıştıran yeni bir tablo eklediğimde, tablo ve ilişkilerini eklemek için Up yönteminde bu kodun üretildiğini görüyorum. Bununla birlikte, OnModelCreating yöntemindeki akıcı API'yi kullanarak ilişkiyi tanımlamayı tercih ediyorum. Bu iki yöntem nasıl etkileşir? Örneğin ilişkiyi tanımlayan Up yönteminden kodu silebilir miyim?OnModelCreating ve otomatik olmayan Göçler nasıl ilişkilendirilir?

cevap

11

Her biri bambaşka bir amacı vardır:

  • OnModelCreating Modelinizin satır içi akıcı-API tanımları için kullanılır. Bu tanımlamalar, varsayılan kurallar, veri ek açıklamaları ve yapılandırma sınıflarıyla birlikte modelin tam tanımını oluşturur.
  • Açık göç veritabanına ne yapılmalıdır bu iki ilişki nasıl geçerli modeline Şimdi

gerektirdiği forma, taşımanız tanımlar? Taşıma, geçiş kodu oluşturmak için kullanılan iki girdiye sahiptir (Up ve Down yöntemleri). Bir girdi, veritabanındaki __MigrationHistory tablosunda depolanan son geçiş kaydıdır. Bu kayıt, veritabanını temsil eden serileştirilmiş modeli içerir. Bu girdi isteğe bağlıdır, çünkü ilk geçişin bu olmadan çalışması gerekir. İkinci giriş zorunludur - geçerli derlemenizdeki kodu uygulayarak alınan geçerli modeliniz =>Add-Migration, geçerli modeli almak ve veritabanından alınan modelle karşılaştırmak için OnModelCreating'u çalıştırır. Karşılaştırmanın sonucu, açık geçişte Up ve Down yöntemlerinin içeriğidir.

+1

Teşekkürler! Yani, doğru şekilde anladığım takdirde, 'Yukarı 'yöntemindeki kod,' OnModelCreating' yönteminde belirlenen tanımları yansıtır (tabii ki akıcı API tanımını yazdıktan sonra bir Göç eklediğinizi varsayalım). Biri * bu yansıtılmış tanımları 'Yukarı'dan kaldırmamalıdır. – Dabblernl

+0

Evet, bu doğru. –

İlgili konular