|
|
Yayınlandı 27.12.2021 22:21:14
|
|
|

arka plan
.NET'in ilk günlerinde, System.Data çerçevesi önemli bir bileşendi. Visual Basic'in ActiveX Veri Nesnelerine benzer şekilde .NET veritabanı sürücüleri oluşturmanın bir yolunu sunar. API farklı olsa da, adı tekrar kullanılır, bu yüzden ADO .NET lakabıdır.
ADO ile ADO .NET (yani System.Data) arasındaki temel farklardan biri nesne modelidir. ADO'da genellikle sadece Connection, Command ve Recordset nesnelerini kullanmanız gerekir ve OleDB/ODBC sürücüsü başka bir şeyi gizler. Bu, kodun yeniden kullanımını iyileştirir, ancak geliştiricilerin bazı veritabanı özelliklerini ortaya çıkarması zordur.
ADO .NET'te OleDB/ODBC de kullanabilirsiniz, ancak çoğu durumda veritabanına özgü bir dizi sınıf kullanırsınız. Bu sınıflar, orijinal kodun yeniden kullanılabilirliğini koruyan DBConnection, DBCommand ve DBDataReader'den türetilmiştir. Ancak güçlü isimli türler oldukları için, .NET kütüphanesinin açıkça bir parçası olmaları gerekir.
Muhtemelen geliştirmeyi basitleştirmek için, SQL Server, OleDB ve ODBC sürücüleri System.Data çerçevesinin bir parçasıdır. Bu yaklaşım o dönemde kabul edilebilirdi, ancak mevcut SQL Server geliştirme döngüsünde sorunlar yarattı.
Aslında, SQL Server sürüm döngüleri 3 yıldan 5 yıla kadar değişti ve neredeyse her yıl değişti. Yeni sürümler genellikle .NET sürücüsünün güncellenmesini gerektirir; bu, .NET standart sürüm döngüsüne bağlıysa mümkün değildir.
İlk adım, System.Data kütüphanesini bölmektir. NET Core, her veritabanı sürücüsü için ayrı kütüphaneler sağlayarak bu adımı başarır. Bir sonraki adım, SQL Server sürücüsünü .NET Core/Standard'dan tamamen ayırmaktır. Bunu yapmak için Microsoft.Data.SqlClient oluşturdular.
Upgrade to Microsoft.Data.SqlClient
Çoğu geliştirici için Microsoft.Data.SqlClient kullanmak çok basit olur, sadece her sınıfın üstündeki using ifadesini değiştirmek yeterlidir. Ayrıca, aynı sınıf adlarını ve API'leri kullanıyor ve yaklaşık aynı özellikleri sunuyor.
Dapper veya RepoDB gibi hafif ORM'ler için daha fazla değişiklik gerekmez.
Geliştiriciler bağlantıları yönetmek için ORM'ler kullanıyorsa (örneğin, EF, NHibernate), ORM yükseltmelerini beklemek zorundadırlar.
En sorunlu olanlar ORM'leri karıştıranlardır. Bir ORM Microsoft.Data.SqlClient kullanırken diğeri System.Data.SqlClient kullanırsa, aynı anda çalışmaz. Bu özellikle paylaşılan SqlTransaction nesneleriyle çalışırken önemlidir.
Kullanılabilir -lik
Microsoft.Data.SqlClient'ın 1.0 sürümü şu platformlar için mevcuttur:
- .NET Framework 4.6+
- .NET Core 2.1+
- .NET Standard 2.0+
Bilinen sorunlar
Herkesin hemen yükseltmesi gerekmez. Bu bilinen sorunlar belgelerde belirtilmiştir:
- Kullanıcı Veri Tipi (UDT), Microsoft.Data.SqlClient ile çalışmayabilir.
- Azure Key Vault ve Microsoft.Data.SqlClient anahtar deposuna sahip değil.
- Microsoft.Data.SqlClient, güvenli enklavlar için Always Encrypted programını desteklemez.
- Sadece .NET Framework ve .NET Core Always Encrypted'i desteklerken, .NET Standard desteklemez, çünkü .NET Standard bazı şifreleme bağımlılıklarından yoksundur.
Orijinal bağlantı:https://blog.csdn.net/weixin_39777464/article/details/111698467 |
Önceki:Linux, sistem saat ve dilimini güncelliyorÖnümüzdeki:ESXI sanal makinesi, Linux sisteminin disk kapasitesini genişletiyor
|