Aracılığıyla paylaş


Sağlayıcıları etkileyen değişiklikler

Bu sayfa, EF Core deposunda yapılan ve diğer veritabanı sağlayıcılarının yazarlarının tepki vermelerini gerektirebilecek çekme isteklerinin bağlantılarını içerir. Amaç, sağlayıcılarını yeni bir sürüme güncelleştirirken mevcut üçüncü taraf veritabanı sağlayıcılarının yazarlarına bir başlangıç noktası sağlamaktır.

Bu günlüğü 2.1'den 2.2'ye yapılan değişikliklerle başlatıyoruz. 2.1'ten önce sorunlarımızda ve çekme isteklerimizde ve providers-fyi etiketlerini kullandıkproviders-beware.

2.2 ---> 3.x

Uygulama düzeyindeki hataya neden olan değişikliklerin çoğunun sağlayıcıları da etkileyeğini unutmayın.

  • https://github.com/dotnet/efcore/pull/14022
    • Eski API'ler kaldırıldı ve isteğe bağlı parametre aşırı yüklemeleri daraltıldı
    • DatabaseColumn.GetUnderlyingStoreType() kaldırıldı
  • https://github.com/dotnet/efcore/pull/14589
    • Eski API'ler kaldırıldı
  • https://github.com/dotnet/efcore/pull/15044
    • Temel uygulamadaki birkaç hatayı düzeltmek için gereken davranış değişiklikleri nedeniyle CharTypeMapping'in alt sınıfları bozulmuş olabilir.
  • https://github.com/dotnet/efcore/pull/15090
    • IDatabaseModelFactory için bir temel sınıf eklendi ve gelecekteki kesmeleri azaltmak için bir paramater nesnesi kullanacak şekilde güncelleştirildi.
  • https://github.com/dotnet/efcore/pull/15123
    • Gelecekteki kesmeleri azaltmak için MigrationsSqlGenerator'da kullanılan parametre nesneleri.
  • https://github.com/dotnet/efcore/pull/14972
    • Günlük düzeylerinin açıkça yapılandırılması için sağlayıcıların kullanabilecekleri API'lerde bazı değişiklikler yapılması gerekiyordu. Özellikle, sağlayıcılar günlük altyapısını doğrudan kullanıyorsa, bu değişiklik bu kullanımı bozabilir. Ayrıca, bundan sonra altyapıyı kullanan sağlayıcıların (genel olacak) veya RelationalLoggingDefinitions'den LoggingDefinitions türetilmesi gerekir. Örnekler için bkz. SQL Server ve bellek içi sağlayıcılar.
  • https://github.com/dotnet/efcore/pull/15091
    • Çekirdek, İlişkisel ve Soyutlamalar kaynak dizeleri artık geneldir.
    • CoreLoggerExtensions ve RelationalLoggerExtensions artık genel kullanıma açık. Sağlayıcılar, çekirdek veya ilişkisel düzeyde tanımlanan olayları günlüğe kaydetme sırasında bu API'leri kullanmalıdır. Günlüğe kaydetme kaynaklarına doğrudan erişmeyin; bunlar hala dahilidir.
    • IRawSqlCommandBuilder tekil hizmetten kapsamlı bir hizmete dönüştü
    • IMigrationsSqlGenerator tekil hizmetten kapsamlı bir hizmete dönüştü
  • https://github.com/dotnet/efcore/pull/14706
    • İlişkisel komutlar oluşturmaya yönelik altyapı, sağlayıcılar tarafından güvenli bir şekilde kullanılabilmesi ve biraz yeniden düzenlenebilmesi için genel kullanıma açık hale getirilmiştir.
  • https://github.com/dotnet/efcore/pull/14733
    • ILazyLoader kapsamı belirlenmiş hizmetten geçici bir hizmete dönüştü
  • https://github.com/dotnet/efcore/pull/14610
    • IUpdateSqlGenerator kapsamı belirlenmiş bir hizmetten tek bir hizmete dönüştü
    • Ayrıca, ISingletonUpdateSqlGenerator kaldırıldı
  • https://github.com/dotnet/efcore/pull/15067
    • Sağlayıcılar tarafından kullanılan birçok iç kod artık genel kullanıma açık hale getirildi
    • Artık başvuruda IndentedStringBuilder bulunmaması gerekir, çünkü onu kullanıma veren yerlerden factor
    • kullanımları NonCapturingLazyInitializer BCL'den ile LazyInitializer değiştirilmelidir
  • https://github.com/dotnet/efcore/pull/14608
    • Bu değişiklik, uygulama hataya neden olan değişiklikler belgesinde tamamen ele alınmıştır. Sağlayıcılar için bu durum daha fazla etkilenebilir çünkü EF core testi genellikle bu soruna neden olabileceği için test altyapısı bu sorunu azaltacak şekilde değişmiştir.
  • https://github.com/dotnet/efcore/issues/13961
    • EntityMaterializerSource basitleştirilmiştir
  • https://github.com/dotnet/efcore/pull/14895
    • StartsWith çevirisi, sağlayıcıların tepki vermek isteyebileceği/ihtiyaç duyabileceği bir şekilde değişti
  • https://github.com/dotnet/efcore/pull/15168
    • Kural kümesi hizmetleri değişti. Sağlayıcılar artık "ProviderConventionSet" veya "RelationalConventionSet" öğesinden devralmalıdır.
    • Özelleştirmeler hizmetler aracılığıyla IConventionSetCustomizer eklenebilir, ancak bunun sağlayıcılar tarafından değil diğer uzantılar tarafından kullanılması amaçlanmıştır.
    • Çalışma zamanında kullanılan kurallar adresinden IConventionSetBuilderçözümlenmelidir.
  • https://github.com/dotnet/efcore/pull/15288
    • Veri tohumlama, iç türlerin kullanılması gereğini önlemek için genel API'de yeniden düzenlenmiş. Bu yalnızca ilişkisel olmayan sağlayıcıları etkilemelidir, çünkü tohumlama tüm ilişkisel sağlayıcılar için temel ilişkisel sınıf tarafından işlenir.

2.1 ---> 2.2

Yalnızca test değişiklikleri

  • https://github.com/dotnet/efcore/pull/12057 - Testlerde özelleştirilebilir SQL sınırlayıcılarına izin ver
    • BuiltInDataTypesTestBase'de katı olmayan kayan nokta karşılaştırmalarına izin veren değişiklikleri test etme
    • Sorgu testlerinin farklı SQL sınırlayıcılarıyla yeniden kullanılmasına izin veren test değişiklikleri
  • https://github.com/dotnet/efcore/pull/12072 - İlişkisel belirtim testlerine DbFunction testleri ekleme
    • Böylece bu testler tüm veritabanı sağlayıcılarına karşı çalıştırılabilir
  • https://github.com/dotnet/efcore/pull/12362 - Zaman uyumsuz test temizleme
    • Çağrıları, gereksiz zaman uyumsuzları kaldırma Wait ve bazı test yöntemlerini yeniden adlandırma
  • https://github.com/dotnet/efcore/pull/12666 - Günlük testi altyapısını birleştirme
    • Önceki bazı günlük altyapısı eklendi CreateListLoggerFactory ve kaldırıldı. Bu altyapı, sağlayıcıların tepki vermek için bu testleri kullanmasını gerektirecek
  • https://github.com/dotnet/efcore/pull/12500 - Hem zaman uyumlu hem de zaman uyumsuz olarak daha fazla sorgu testi çalıştırma
    • Test adları ve çarpanları değişti, bu da bu testleri kullanan sağlayıcıların tepki vermelerini gerektirecektir
  • https://github.com/dotnet/efcore/pull/12766 - ComplexNavigations modelinde gezintileri yeniden adlandırma
    • Bu testleri kullanan sağlayıcıların tepki vermeleri gerekebilir
  • https://github.com/dotnet/efcore/pull/12141 - İşlevsel testlerde yok etmek yerine bağlamı havuza döndürme
    • Bu değişiklik, sağlayıcıların tepki vermelerini gerektirebilecek bazı test yeniden düzenlemelerini içerir

Test ve ürün kodu değişiklikleri

  • https://github.com/dotnet/efcore/pull/12109 - RelationalTypeMapping.Clone yöntemlerini birleştirme
    • Türetilmiş sınıflarda basitleştirme için 2.1'de RelationalTypeMapping'e yapılan değişikliklere izin verilir. Bunun sağlayıcılar için hataya neden olduğunu düşünmüyoruz, ancak sağlayıcılar türetilmiş tür eşleme sınıflarında bu değişiklikden yararlanabilir.
  • https://github.com/dotnet/efcore/pull/12069 - Etiketli veya adlandırılmış sorgular
    • LINQ sorgularını etiketlemek ve bu etiketlerin SQL'de açıklama olarak gösterilmesi için altyapı ekler. Bu, sağlayıcıların SQL oluşturmada tepki vermelerini gerektirebilir.
  • https://github.com/dotnet/efcore/pull/13115 - NTS aracılığıyla uzamsal verileri destekleme
    • Tür eşlemelerinin ve üye çeviricilerin sağlayıcı dışında kaydedilmesine izin verir
      • Sağlayıcıların base çağrısı yapması gerekir. Çalışması için ITypeMappingSource uygulamasında FindMapping()
    • Sağlayıcılar arasında tutarlı olan uzamsal desteği sağlayıcınıza eklemek için bu düzeni izleyin.
  • https://github.com/dotnet/efcore/pull/13199 - Hizmet sağlayıcısı oluşturma için gelişmiş hata ayıklama ekleme
    • DbContextOptionsExtensions'ın, kullanıcıların iç hizmet sağlayıcısının neden yeniden derlendiğini anlamasına yardımcı olabilecek yeni bir arabirim uygulamasına izin verir
  • https://github.com/dotnet/efcore/pull/13289- Sistem durumu denetimleri tarafından kullanılmak üzere Can Bağlan API'sini ekler
    • Bu çekme isteği, veritabanının CanConnect kullanılabilir olup olmadığını belirlemek için ASP.NET Core sistem durumu denetimleri tarafından kullanılacak kavramını ekler. Varsayılan olarak, ilişkisel uygulama yalnızca öğesini çağırır Exist, ancak sağlayıcılar gerekirse farklı bir şey uygulayabilir. durum denetiminin kullanılabilir olması için ilişkisel olmayan sağlayıcıların yeni API'yi uygulaması gerekir.
  • https://github.com/dotnet/efcore/pull/13306 - Temel RelationalTypeMapping'i DbParameter Boyutu ayarlanmayacak şekilde güncelleştirin
    • Kesmeye neden olabileceğinden Boyut ayarını varsayılan olarak durdurun. Boyut'un ayarlanması gerekiyorsa sağlayıcıların kendi mantığını eklemesi gerekebilir.
  • https://github.com/dotnet/efcore/pull/13372 - RevEng: Ondalık sütunlar için her zaman sütun türünü belirtin
    • Kurala göre yapılandırmak yerine her zaman yapı iskelesi koddaki ondalık sütunlar için sütun türünü yapılandırın.
    • Sağlayıcılar kendi uçlarında herhangi bir değişiklik gerektirmemelidir.
  • https://github.com/dotnet/efcore/pull/13469 - SQL CASE ifadeleri oluşturmak için CaseExpression ekler
  • https://github.com/dotnet/efcore/pull/13648 - Bağımsız değişkenlerin ve sonuçların mağaza türü çıkarımını geliştirmek için SqlFunctionExpression'da tür eşlemeleri belirtme özelliğini ekler.