Share via


Entity Framework Core 5.0 için plan

Önemli

EF Core 5.0 kullanıma sunuldu. Bu sayfa, planın geçmiş kaydı olarak kalır.

Planlama sürecinde açıklandığı gibi, EF Core 5.0 sürümü için kesin olmayan bir plana paydaşlardan girdiler topladık.

Önemli

Bu plan hala devam eden bir çalışmadır. Burada hiçbir şey taahhüt değildir. Bu plan, daha fazla bilgi edindikçe gelişecek bir başlangıç noktasıdır. Şu anda 5.0 için planlanmayan bazı şeyler çekilebilir. Şu anda 5.0 için planlanan bazı şeyler aşılabilir.

Genel bilgiler

Sürüm numarası ve yayın tarihi

EF Core 5.0 şu anda .NET 5.0 ile aynı zamanda yayın için zamanlanmıştır. .NET 5.0 ile uyumlu hale getirmek için "5.0" sürümü seçildi.

Desteklenen platformlar

EF Core 5.0'ın .NET 5.0 dahil olmak üzere herhangi bir .NET Standard 2.1 platformunda çalıştırılması planlanıyor. Bu, platformların .NET Core ile daha genel .NET geniş yakınsamasının bir parçasıdır.

EF Core 5.0 , .NET Framework üzerinde çalışmaz.

Hataya neden olan değişiklikler

EF Core 5.0 bazı hataya neden olan değişiklikler içerir, ancak bunlar EF Core 3.0'a kıyasla çok daha az ciddi olacaktır. Hedefimiz, uygulamaların büyük çoğunluğunun kırılmadan güncelleştirilebilmesini sağlamaktır.

Veritabanı sağlayıcıları için, özellikle de TPT desteğiyle ilgili bazı hataya neden olan değişiklikler olması beklenir. Ancak bir sağlayıcıyı 5.0 için güncelleştirme çalışmasının 3.0 için güncelleştirilmesinin gerekenden daha az olmasını bekliyoruz.

Themes

EF Core 5.0'a yapılan büyük yatırımların temelini oluşturacak birkaç ana alan veya tema ayıkladık.

Kurala göre tamamen saydam çoka çok eşleme

Müşteri adayı geliştiricileri: @smitpatel, @AndriySvyrydve @lajones

#10508 tarafından izlendi

Tişört boyutu: L

Durum: Bitti

Çoka çok, GitHub kapsamı üzerinde en çok istenen özelliktir (yaklaşık 506 oy).

Çoka çok ilişkiler desteği üç ana alana ayrılabilir:

  • Sonraki temanın kapsamına alınan gezinti özelliklerini atlayın.
  • Özellik paketi varlık türleri. Bunlar, her varlık türü için açık bir CLR türü gerekmeyecek şekilde varlık örnekleri için standart bir CLR türünün (örneğin Dictionary) kullanılmasına olanak tanır. #9914 tarafından izlendi.
  • Çoka çok ilişkilerin kolay yapılandırılması için şeker.

Atlama gezinti desteğine ek olarak, tam bir deneyim sağlamak için çoka çok olan bu diğer alanları EF Core 5.0'a çekiyoruz.

Çoka çok gezinti özellikleri (yani "gezintileri atla")

Müşteri adayı geliştiricileri: @smitpatel ve @AndriySvyryd

#19003 tarafından izlendi

Tişört boyutu: L

Durum: Bitti

İlk temada açıklandığı gibi, çoka çok desteğin birden çok yönü vardır. Bu tema özellikle atlama gezintilerinin kullanımını izler. Çoka çok destek isteyen kişiler için en önemli engelleyicinin, birleştirme tablosuna başvurmadan sorgular gibi iş mantığında "doğal" ilişkileri kullanamamak olduğuna inanıyoruz. Birleştirme tablosu varlık türü hala mevcut olabilir, ancak iş mantığının önünü kesmemelidir.

Tür başına tablo (TPT) devralma eşlemesi

Müşteri adayı geliştiricisi: @AndriySvyryd ve @smitpatel

#2266 tarafından izlendi

Tişört boyutu: XL

Durum: Bitti

Hem yüksek oranda istenen bir özellik (yaklaşık 289 oy; genel olarak 3. ) hem de genel .NET 5 planının temel yapısına uygun olduğunu hissettiğimiz bazı düşük düzeyli değişiklikler gerektirdiğinden TPT yapıyoruz. Bunun veritabanı sağlayıcıları için hataya neden olmasını bekliyoruz, ancak bunlar 3.0 için gereken değişikliklerden çok daha az ciddi olmalıdır.

Filtrelenmiş Dahil Et

Müşteri adayı geliştiricisi: @maumar

#1833 tarafından izlendi

Tişört boyutu: M

Durum: Bitti

Filtrelenmiş Ekleme, çok fazla çalışma gerektirmeyen ve şu anda model düzeyinde filtreler veya daha karmaşık sorgular gerektiren birçok senaryonun engellemesini kaldıracağına veya kolaylaştıracağına inandığımız yüksek oranda istenen bir özelliktir (yaklaşık 376 oy; genel olarak 2.

Dahil Et'i böl

Müşteri adayı geliştiricisi: @smitpatel

#20892 tarafından izlendi

Tişört boyutu: L

Durum: Bitti

EF Core 3.0, belirli bir LINQ sorgusu için tek bir SQL sorgusu oluşturmak üzere varsayılan davranışı değiştirdi. Bu, birden çok koleksiyon için Include kullanan sorgularda büyük performans regresyonlarına neden oldu.

EF Core 5.0'da yeni varsayılan davranışı koruyoruz. Ancak EF Core 5.0 artık koleksiyon için birden çok sorgu oluşturulmasına izin verir. Tek bir sorguya sahip olmanın kötü performansa neden olduğu yerleri içerir.

Gerekli bire bir bağımlılar

Müşteri adayı geliştiricileri: @AndriySvyryd ve @smitpatel

#12100 tarafından izlendi

Tişört boyutu: M

Durum: Bitti

EF Core 3.0'da sahip olunan türler de dahil olmak üzere tüm bağımlılar isteğe bağlıdır (örneğin, Person.Address null olabilir). EF Core 5.0'da bağımlılar gerektiği gibi yapılandırılabilir.

ToTable, ToQuery, ToView, FromSql vb.

Müşteri adayı geliştiricileri: @AndriySvyryd ve @smitpatel

#17270 tarafından izlendi

Tişört boyutu: L

Durum: Bitti

Önceki sürümlerde ham SQL'i, anahtarsız türleri ve ilgili alanları destekleme konusunda ilerleme kaydettik. Ancak, her şeyin bir bütün olarak birlikte çalışma biçiminde hem boşluklar hem de tutarsızlıklar vardır. 5.0'ın amacı bunları düzeltmek ve farklı varlık türlerini ve ilişkili sorgularını ve veritabanı yapıtlarını tanımlamak, geçirmek ve kullanmak için iyi bir deneyim oluşturmaktır. Bu, derlenmiş sorgu API'sine yapılan güncelleştirmeleri de içerebilir.

Şu anda sahip olduğumuz işlevlerden bazıları insanları hızlı bir şekilde hata çukurlarına yönlendirecek kadar izin verici olduğundan bu öğenin bazı uygulama düzeyinde hataya neden olabileceğini unutmayın. Bunun yerine yapılması gerekenler konusunda yönergelerle birlikte bu işlevlerin bazılarını engelleme olasılığımız olacaktır.

Genel sorgu geliştirmeleri

Müşteri adayı geliştiricileri: @smitpatel ve @maumar

5.0 kilometre taşında etiketlenen area-query sorunlar tarafından izlenir

Tişört boyutu: XL

Durum: Bitti

EF Core 3.0 için sorgu çevirisi kodu kapsamlı bir şekilde yeniden yazıldı. Bu durum nedeniyle sorgu kodu genellikle çok daha sağlam bir durumdadır. 5.0 için, TPT'yi desteklemek ve gezinti özelliklerini atlamak için gerekenlerin dışında önemli sorgu değişiklikleri yapmayı planlamıyoruz. Ancak, 3.0'lık elden geçirmeden kalan bazı teknik borçları düzeltmek için hala önemli bir çalışma gerekiyor. Ayrıca birçok hatayı düzeltmeyi ve genel sorgu deneyimini daha da geliştirmek için küçük geliştirmeler uygulamayı planlıyoruz.

Geçişler ve dağıtım deneyimi

Müşteri adayı geliştiricileri: @bricelam

#19587 tarafından izlendi

Tişört boyutu: L

Durum: Kapsamlı/Bitti

Kapsam belirleme: Geçiş paketleri özelliği EF Core 5.0 sürümüne kadar ertelenmiştir. Ancak, geçişlerle ilgili diğer birkaç hedeflenen iyileştirme EF Core 5.0'a eklenecektir

Şu anda birçok geliştirici, uygulama başlatma zamanında veritabanlarını geçirmektedir. Bu kolaydır ancak şu nedenden dolayı önerilmez:

  • Birden çok iş parçacığı/işlem/sunucu veritabanını eşzamanlı olarak geçirmeye çalışabilir
  • Bu durum gerçekleştiğinde uygulamalar tutarsız duruma erişmeye çalışabilir
  • Genellikle şemayı değiştirmek için veritabanı izinleri uygulama yürütme için verilmemelidir
  • Bir sorun olduğunda temiz duruma geri dönmek zordur

Burada, dağıtım zamanında veritabanını geçirmenin kolay bir yolunu sağlayan daha iyi bir deneyim sunmak istiyoruz. Bunun yapılması gerekir:

  • Linux, Mac ve Windows üzerinde çalışma
  • Komut satırında iyi bir deneyim yaşayın
  • Kapsayıcılarla ilgili destek senaryoları
  • Yaygın olarak kullanılan gerçek dünya dağıtım araçları/akışları ile çalışma
  • En az Visual Studio ile tümleştirme

Sonuç, EF Core'da çok sayıda küçük geliştirme (örneğin, SQLite'te daha iyi Geçişler) ve yalnızca EF'in ötesine geçen uçtan uca deneyimleri geliştirmek için diğer ekiplerle rehberlik ve uzun vadeli işbirliği yapılması olabilir.

EF Core platformları deneyimi

Müşteri adayı geliştiricileri: @roji ve @bricelam

#19588 tarafından izlendi

Tişört boyutu: L

Durum: Kapsam/Bitti

Kapsam belirleme: Blazor, Xamarin, WinForms ve WPF için platform kılavuzu ve örnekleri yayımlanır. Xamarin ve diğer AOT/bağlayıcı çalışmaları artık EF Core 6.0 için planlanıyor.

Ef Core'un geleneksel MVC benzeri web uygulamalarında kullanılmasına yönelik iyi kılavuzlarımız vardır. Diğer platformlar ve uygulama modelleri için yönergeler eksik veya güncel değil. EF Core 5.0 için EF Core kullanma deneyimini araştırmayı, geliştirmeyi ve belgele almayı planlıyoruz:

  • Blazor
  • AOT/bağlayıcı hikayesini kullanma dahil olmak üzere Xamarin
  • WinForms/WPF/WinUI ve muhtemelen diğer U.I. çerçeveleri

Bu, EF Core'da birçok küçük geliştirmenin yanı, yalnızca EF'in ötesine geçen uçtan uca deneyimleri geliştirmek için rehberlik ve diğer ekiplerle uzun vadeli işbirliği yapılması gibi birçok küçük geliştirme olabilir.

Bakmayı planladığımız belirli alanlar şunlardır:

  • Geçişler gibi EF araçlarını kullanma deneyimi de dahil olmak üzere dağıtım
  • Xamarin ve Blazor gibi uygulama modelleri ve büyük olasılıkla diğerleri
  • Uzamsal deneyim ve tablo yeniden derlemeleri de dahil olmak üzere SQLite deneyimleri
  • AOT ve bağlantı deneyimleri
  • Performans sayaçları da dahil olmak üzere tanılama tümleştirmesi

Performans

Müşteri adayı geliştiricisi: @roji

5.0 kilometre taşında etiketlenen area-perf sorunlar tarafından izlenir

Tişört boyutu: L

Durum: Kapsamlı/Bitti

Kapsam belirleme: Npgsql sağlayıcısındaki önemli performans iyileştirmeleri tamamlandı. EF Core 6.0 için diğer performans çalışmaları planlanıyor.

EF Core için performans karşılaştırmaları paketimizi geliştirmeyi ve çalışma zamanında yönlendirilmiş performans geliştirmeleri yapmayı planlıyoruz. Ayrıca, 3.0 yayın döngüsü sırasında prototipi oluşturulan yeni ADO.NET toplu işlem API'sini tamamlamayı planlıyoruz. Ayrıca ADO.NET katmanında Npgsql sağlayıcısına ek performans iyileştirmeleri planlıyoruz.

Bu çalışmanın bir parçası olarak, ADO.NET/EF Core performans sayaçlarını ve diğer tanılamaları uygun şekilde eklemeyi planlıyoruz.

Mimari/katkıda bulunan belgeleri

Müşteri adayı belgeleyicisi: @ajcvickers

#1920 tarafından izlendi

Tişört boyutu: L

Durum: Kes

Buradaki fikir, EF Core'un iç kısmında neler olup bittiğinin anlaşılmasını kolaylaştırmaktır. Bu, EF Core kullanan herkes için yararlı olabilir, ancak birincil motivasyon dış kişilerin şunları yapmasını kolaylaştırmaktır:

  • EF Core koduna katkıda bulunma
  • Veritabanı sağlayıcıları oluşturma
  • Diğer uzantıları oluşturma

Güncelleştirme: Ne yazık ki bu plan çok iddialıydı. Hala bunun önemli olduğuna inanıyoruz, ancak ne yazık ki EF Core 5.0 ile inmeyecek.

Microsoft.Data.Sqlite belgeleri

Müşteri adayı belgeleyicisi: @bricelam

#1675 tarafından izlendi

Tişört boyutu: M

Durum: Tamamlandı. Yeni belgeler Microsoft Learn'de yayınlanmıştır.

EF Ekibi, Microsoft.Data.Sqlite ADO.NET sağlayıcısının da sahibidir. Bu sağlayıcıyı 5.0 sürümünün bir parçası olarak tamamen belgeleyeceğiz.

Genel belgeler

Müşteri adayı belgeleyicisi: @ajcvickers

5.0 kilometre taşındaki belge deposundaki sorunlar tarafından izlenir

Tişört boyutu: L

Durum: Devam ediyor

3.0 ve 3.1 sürümleri için belgeleri güncelleştirme aşamasındayız. Ayrıca şunlar üzerinde çalışıyoruz:

  • Kullanmaya başlama makalelerinin daha kolay ulaşılabilir/takip edilebilir olmasını sağlamak için yapılan bir değişiklik
  • Öğeleri bulmayı kolaylaştırmak ve çapraz başvuru eklemek için makalelerin yeniden düzenlenmesi
  • Mevcut makalelere daha fazla ayrıntı ve açıklama ekleme
  • Örnekleri güncelleştirme ve daha fazla örnek ekleme

Hataları düzeltme

5.0 kilometre taşında etiketlenen type-bug sorunlar tarafından izlenir

Geliştiriciler: @roji, @maumar, @bricelam, @smitpatel, , @AndriySvyryd, @ajcvickers

Tişört boyutu: L

Durum: Devam ediyor

Yazma sırasında, 5.0 sürümünde düzeltilecek 135 hatamız var (62 zaten düzeltildi), ancak yukarıdaki Genel sorgu geliştirmeleri bölümüyle önemli bir çakışma var.

3.0 sürümü boyunca gelen oran (bir kilometre taşında iş olarak sonuçlanan sorunlar) ayda yaklaşık 23 sorundu. Bunların tümünün 5.0'da düzeltilmesi gerekmez. Kaba bir tahmin olarak 5,0 zaman diliminde ek 150 sorunu düzeltmeyi planlıyoruz.

Küçük geliştirmeler

5.0 kilometre taşında etiketlenen type-enhancement sorunlar tarafından izlenir

Geliştiriciler: @roji, @maumar, @bricelam, @smitpatel, , @AndriySvyryd, @ajcvickers

Tişört boyutu: L

Durum: Bitti

Yukarıda özetlenen daha büyük özelliklere ek olarak, "kağıt kesimlerini" düzeltmek için 5.0 için zamanlanmış birçok daha küçük iyileştirmemiz de vardır. Bu geliştirmelerin çoğunun yukarıda özetlenen daha genel temalarla da ele alındığını unutmayın.

Satırın altında

etiketlenen sorunlar tarafından izlendi consider-for-next-release

Bunlar, şu anda 5.0 sürümü için zamanlanmış olmayan hata düzeltmeleri ve geliştirmelerdir, ancak yukarıdaki çalışmada yapılan ilerlemeye bağlı olarak esnetme hedefleri olarak ele alacaktır.

Buna ek olarak, planlama sırasında her zaman en çok oy alan sorunları dikkate alırız. Bu sorunlardan herhangi birini yayından kesmek her zaman acı vericidir, ancak sahip olduğumuz kaynaklar için gerçekçi bir plana ihtiyacımız vardır.

Öneriler

Planlamayla ilgili geri bildiriminiz önemlidir. Sorunun önemini belirtmenin en iyi yolu, GitHub'da bu sorun için oy kullanmaktır (başparmak). Bu veriler sonraki sürüm için planlama sürecine aktarılır.