Microsoft.Data.SqlClient ile ADO.NET mimarisi

ADO.NET, .NET'e entegre edilmiş veri erişim modelidir. Microsoft. Data.SqlClient, bu modeli SQL Server uyumlu veritabanları için uygular ve SQL Server'a özgü yetenekler ekler.

Microsoft. Data.SqlClient açılış sayfası, sürücü özellik haritasını ve üretim temelini sağlar. Bu makale, sürücünün ADO.NET içindeki yerini açıklar.

ADO.NET soyutlamaları ve SqlClient türleri

ADO.NET, System.Data.Common ad alanında sağlayıcıdan bağımsız soyutlamaları tanımlar. Microsoft. Data.SqlClient somut uygulamalar sağlar.

ADO.NET soyutlama SqlClient tipi Purpose
DbConnection SqlConnection Bir veritabanına mantıklı bir bağlantı açar.
DbCommand SqlCommand SQL metni veya bir kayıtlı prosedürü çalıştırır.
DbParameter SqlParameter Komut metninden ayrı olarak yazılmış bir değer gönderir.
DbDataReader SqlDataReader Sonuç satırlarını sunucudan akış halinde iletir.
DbTransaction SqlTransaction Komutları tek bir atomik işlemde gruplar.
DbDataAdapter SqlDataAdapter Bağlantısı kesilmiş DataSet ve DataTable nesneleri doldurur ve günceller.
DbBatch SqlBatch Desteklenen hedef çerçevelerde birden fazla komutu tek bir toplu olarak gönderir.

Bir kütüphane birden fazla veritabanı sağlayıcısını desteklemek zorunda olduğunda ADO.NET soyutlamalarına karşı programlama. Bir uygulama SQL Server'ı hedefliyor ve sağlayıcıya özgü özelliklere ihtiyaç duyduğunda SqlClient türlerini kullanın.

Bağlantılı veri erişimi

Bağlı erişim, bir komut çalışırken ve uygulama sonuçlarını okurken bağlantıyı erişilebilir kılar.

Yaygın bir istek şu sırayı izler:

  1. Bir bağlantı dizesinden SqlConnection oluşturun.
  2. Bağlantıyı açın.
  3. Bir SqlCommand oluşturun ve SqlParameter değerleri ekleyin.
  4. komutunu yürütün.
  5. Bir skaler değeri, etkilenen satır sayısını veya SqlDataReader işleyin.
  6. Okuyucuyu, komutu ve bağlantıyı ortadan kaldırın.

Çoğu web API, servis, işçi ve komut satırı uygulaması için bağlı erişim kullanın. SqlDataReader Satır akışını yapar ve genellikle tüm sonucu bir DataSet'a yüklemekten daha az bellek kullanır.

Her iş birimi için bir SqlConnection açıp ortadan kaldırmak olağan yaklaşımdır. Bağlantı havuzu temel fiziksel bağlantıyı yeniden kullanır. Bir uygulamanın ömrü boyunca tek bir küresel bağlantıyı açık tutmayın.

Bağlantısız veri erişimi

SqlDataAdapter, SQL Server ile bellek içi DataSet veya DataTable arasında veri aktarır. Uygulama, bellek içindeki verileri okurken veya değiştirirken bağlantıyı kapatabilir, ardından güncellemeleri göndermek için yeniden bağlanabilir.

İhtiyacınız olduğunda bağlantısı kesilen erişimi kullanın:

  • DataSet veya DataTable öğesine veri bağlama.
  • Hafıza içi ilişkiler ve kısıtlamalar.
  • Daha sonra uzlaştırılan çevrimdışı düzenlemeler.
  • DataAdapter'lar etrafında kurulmuş mevcut bir uygulama ile uyumluluk.

Yeni istek odaklı hizmetler için, bağlantısı kesilen nesne modeline ihtiyacınız olmadığı sürece ve SqlCommandSqlDataReader ile başlayın.

SQL Server'a özgü özellikler

Microsoft. Data.SqlClient, sağlayıcıdan bağımsız ADO.NET sözleşmesinin parçası olmayan API'ler ve bağlantı davranışları ekler:

  • Microsoft Entra kimlik doğrulama ve erişim token geri çağrıları.
  • TDS 8.0 sıkı şifreleme ve SQL Server sertifika seçenekleri.
  • Her zaman şifreli ve güvenli bölgeler.
  • SqlBulkCopy yüksek aktarım hacimli veri yükleme için.
  • Tablo değerli parametreler.
  • SQL Server veri türleri, JSON ve vektör türleri dahil.
  • Yapılandırılabilir yeniden deneme mantığı.
  • SQL Server tanıları, istatistikleri ve sayaçları.
  • Erişilebilirlik grubu ve failover bağlantı seçenekleri.

Bu özellikleri kullanmak, o kodu Microsoft.Data.SqlClient’a bağımlı hâle getirir. Uygulamanın geri kalanı sağlayıcıdan bağımsız kalmak zorundasa, sağlayıcıya özgü kodu veri erişim sınırının arkasında tutun.

Nesne ömrü ve eşzamanlılık

Bağlantıları, komutları, okuyucuları, işlemleri ve toplu kopya nesnelerini hemen ortadan kaldırın. Bir tür IAsyncDisposable uyguluyorsa, await using öğesini asenkron kodla kullanın.

SqlConnection, SqlCommand, SqlDataReader, ve SqlTransaction birden fazla iş parçacığından eşzamanlı kullanımı desteklemiyor. Her eşzamanlı operasyona kendi bağlantısını verin ve bağlantı havuzuna güvenin. Birden fazla Aktif Sonuç Kümesi (MARS), bir bağlantıda birden fazla aktif sonuç setine izin verir, ancak SqlClient nesnelerini iş parçacığına güvenli hale getirmez.

Paketler ve isim alanları

NuGet paketini Microsoft.Data.SqlClient yükleyin ve namespace'i Microsoft.Data.SqlClient içe aktarın. Sürücü .NET'ten bağımsız olarak gönderilir, bu nedenle özellik, sürüm ve destek takvimleri .NET çalışma zamanından farklıdır.

System.Data.SqlClient daha eski sağlayıcıdır. Yeni geliştirmeler için Microsoft.Data.SqlClient kullanın. Mevcut bir uygulama için, System.Data.SqlClient'tan Microsoft.Data.SqlClient'a Geçiş başlıklı makaleyi izleyin.