8

Projemde ayrı bir geliştirme dalına sahip ve her sürüm için ayrı bir şubeye sahip bir şube modelimiz var. Bu gibi görünebilir: Entity Framework 6 Kod İlk geçişler - üretim için çok sayıda dal

dev   ______  ______ 
     / \ / \ 
master --+---+----+---+---+----+----+--- (...) 
      r1 \______/ r2 \_______/ 

Buradan problemin ana birleştirme dev üzerine geliştirmek ve sonra da bir serbest bırakma kolu (r1, r2, ...) oluşturun.

EF 6 (manuel otomatik değil) geçişlerini kullanmak istiyoruz, ancak nasıl yanıt vereceğimizi bilmediğimiz bir sorumuz var.

bu hayal:

dev   _(1)__  ____(4) 
     / \ / \ 
master --+---+----+---+---+----+-(5)*-+--- (...) 
      r1 \_(2)__/ r2 \(3)______/ 

Her sayı bir göç. Her bir daldaki kaynak kontrolüne eklenmiştir ve projemizin üretim örneklerinin veritabanlarına uygulanmıştır (sadece düzeltmeler için belirli bir süre için birden fazla sürümü destekliyoruz) bu yüzden onları düşüremiyoruz, sadece Up() 'a gidebiliriz. Yıldız, analiz etmek istediğimiz zaman noktasını işaretler. Biz göçler bu şekilde çalışması için istiyorum:

  • r1 veritabanı uygulanan (2) yalnızca göç vardır
  • r2 veritabanı vardır (1), (2) ve (3) uygulanan
  • ana veritabanı vardır (1) (2), (4) ve (5) uygulanan
  • dev veritabanı vardır (1), (2) ve (4)

Ayrıca uygulanan

  • Veritabanımızdaki
  • 'daki bir veriyi kaybedemeyiz, r1 veritabanının r2 (veya başka bir gelecekteki sürüm) veritabanına herhangi bir hata olmadan güncellenmesi ve böylece tüm r2 veri tabanları ile aynı veritabanı yapısına sahip olması gerekir (Kod ilk modeline karşılık gelen, r2 olarak oluşturuldu veya önceki sürümlerden güncellendi).

Bu yapılabilir mi? Evet ise nasıl?

Daha fazla ayrıntıya ihtiyacınız varsa, lütfen sorunuz.

cevap

11

Sana her durumda neler yapabileceğini anlatmaya çalışacağım, ancak oldukça karmaşık ve buraya açıklandığı gibi ben de bunu açıklamak mümkün olmaz:

Code First Migrations in Team Environments

karmaşık olsa da ve şubeleri birleştirmek için sık sık bu belgeye başvurmanız gerekecek, eğer bu belgeyi takip ederseniz tüm sorularınızı çözdüğünü göreceksiniz.

Sorumluluk Reddi: Biliyorum kendi kendine yetiyor olmalı, ama açıklama çok karmaşık ve uzun bir özet bile bulamıyorum bile. Bağlantılı MSDN belgelerinin kaybolmadığını umuyorum.

+0

Test etme ve kontrol etme süresinden sonra çalışmanın işe yaradığını doğrulayabilirim! Sıklıkla "Seçenek 1: Boş bir" birleştirme "geçişi" kullanırız. Teşekkürler! –

+0

Master'ın yayına geçtiği durumlarda, özellik dalındaki bazı geliştiriciler, geçişteki bazı geçişler öncesinde bir geçiş zaman damgasıyla uyumsuz model değişiklikleri yaptığında, kafa dalı geçişlerinden sonra gelmek için özellik dallı geçişlerini her zaman yeniden oluşturmak üzere yeniden oluşturmak daha iyidir. – JustAMartin

+0

bu link için teşekkürler, iyi bir okuma oldu! – Phil

İlgili konular