EF6'dan EF Core'a Bağlantı Noktası - Veritabanı Gerçeklik Kaynağı
Veritabanını gerçeğin kaynağı olarak kullanıyorsanız, yükseltme çoğunlukla oluşturulan varlıkların şeklindeki tüm değişiklikleri ele almakla ilgilidir. Geçiş adımları şunlardır:
- Veritabanını modellemek için belirli bir noktayı seçin.
- EF6 projelerinizin güncel ve veritabanıyla eşitlenmiş olduğundan emin olun.
- EF Core projesini oluşturun.
- Veritabanınızda ters mühendislik uygulamak için yapı iskelesi araçlarını kullanın.
- EF Core tarafından oluşturulan sınıfların kodunuzla uyumlu olduğunu doğrulayın.
- Özel durumlar için, oluşturulan sınıfları değiştirin ve model yapılandırmasını güncelleştirin veya kodunuzu modele uyarlayın.
EF Core şu anda veritabanının bir kopyasını başarıyla oluşturmak için gereken her şeyi yapı iskelesi oluştursa da, veritabanının öncelikli yaklaşımı için kodun büyük bir kısmının gerekli olmadığını unutmayın. Bunun düzeltmesi Sorun #10890'da izlenir. Gerekmediği sürece güvenle yoksayabileceğiniz şeyler şunlardır: diziler, kısıtlama adları, benzersiz olmayan dizinler ve dizin filtreleri.
Şema değişikliklerini işleme
Veritabanınız gerçeğin kaynağı olduğunda EF Core, şema bilgilerini geçişler aracılığıyla göndermek yerine veritabanından çeker. Tipik iş akışı, veritabanı şeması her değiştiğinde tersine mühendislik adımını yeniden çalıştırmaktır. Yapı iskelesi işlemini otomatikleştirebileceğiniz ve testlerinizi çalıştırarak değişiklikleri doğrulayabildiğiniz için kapsamlı bir test paketi bu yaklaşım için değerlidir.
Model farklarını işlemek için İpuçları
Çeşitli nedenlerle, C# etki alanı modelinizin tersine mühendislikte oluşturulandan farklı şekilde şekillendirilmesi isteyebilirsiniz. Çoğu durumda bu, her şema değişikliğinden sonra otomatik olarak oluşturulan kodu el ile güncelleştirmek anlamına gelir. Kod yeniden oluşturulurken ek çabayı önlemenin bir yolu, DbContext'iniz ve ilgili varlıklarınız için kısmi sınıflar kullanmaktır. Daha sonra iş mantığı ve veritabanında izlenmemiş özelliklerle ilgili kodu, üzerine yazılmayan ayrı bir sınıf dosyası kümesinde tutabilirsiniz.
Modeliniz oluşturulan modelden önemli ölçüde farklıysa ancak sık sık değişmiyorsa, göz önünde bulundurmanız gereken bir seçenek de depo düzeninin bağdaştırıcı olarak kullanılmasıdır. Depo, EF Core tarafından oluşturulan sınıfları kullanabilir ve kullandığınız özel sınıfları yayımlayabilir. Bu, şema her değiştiğinde uygulama genelinde yeniden düzenleme yapmak zorunda kalmak yerine bunları depo koduna yalıtarak değişikliklerin etkisini azaltabilir.
Alternatif bir iş akışını göz önünde bulundurmak ve karma yaklaşıma benzer adımları izlemek isteyebilirsiniz. Her seferinde yeni bir sınıf kümesi oluşturmak yerine, yalnızca yeni sınıflar oluşturmak için belirli tabloları belirtirsiniz. Mevcut sınıfları "olduğu gibi" tutar ve değiştirilen özellikleri doğrudan ekler veya kaldırırsınız. Ardından, veritabanının mevcut sınıflarınızla nasıl eşlenmesindeki değişiklikleri ele almak için model yapılandırmasını güncelleştirirsiniz.
Kod oluşturmayı özelleştirme
EF Core 6 şu anda oluşturulan kodun özelleştirilmesini desteklemiyor. EF Core Power Tools gibi üçüncü taraf çözümler mevcuttur. Öne çıkan topluluk araçlarının ve uzantılarının listesi için bkz. EF Core Araçları ve Uzantıları.
Son olarak, taşımayla ilgili kalan sorunları gidermek için EF6 ile EF Core arasındaki farkların ayrıntılı listesini gözden geçirin.