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
'denLoggingDefinitions
türetilmesi gerekir. Örnekler için bkz. SQL Server ve bellek içi sağlayıcılar.
- 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
- https://github.com/dotnet/efcore/pull/15091
- Çekirdek, İlişkisel ve Soyutlamalar kaynak dizeleri artık geneldir.
CoreLoggerExtensions
veRelationalLoggerExtensions
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 ileLazyInitializer
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
- Çağrıları, gereksiz zaman uyumsuzları kaldı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
- Önceki bazı günlük altyapısı eklendi
- 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.
- Tür eşlemelerinin ve üye çeviricilerin sağlayıcı dışında kaydedilmesine izin verir
- 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ırExist
, 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.
- Bu çekme isteği, veritabanının
- 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.