Arsitektur ADO.NET dengan Microsoft. Data.SqlClient

ADO.NET adalah model akses data yang terintegrasi dalam .NET. Microsoft. Data.SqlClient mengimplementasikan model tersebut untuk basis data yang kompatibel dengan SQL Server dan menambahkan kemampuan khusus SQL Server.

Halaman landing Microsoft. Data.SqlClient menyediakan peta fitur driver dan baseline produksi. Artikel ini menjelaskan bagaimana driver terintegrasi dalam ADO.NET.

Abstraksi ADO.NET dan tipe SqlClient

ADO.NET mendefinisikan abstraksi yang independen dari penyedia dalam System.Data.Common namespace. Microsoft. Data.SqlClient menyediakan implementasi konkret.

Abstraksi ADO.NET Tipe SqlClient Kegunaan
DbConnection SqlConnection Membuka koneksi logis ke satu database.
DbCommand SqlCommand Menjalankan teks SQL atau prosedur tersimpan.
DbParameter SqlParameter Mengirim nilai yang diketik secara terpisah dari teks perintah.
DbDataReader SqlDataReader Mengalirkan baris hasil dari server secara bertahap.
DbTransaction SqlTransaction Mengelompokkan perintah menjadi satu transaksi atomik.
DbDataAdapter SqlDataAdapter Mengisi dan memperbarui objek DataSet dan DataTable yang terputus.
DbBatch SqlBatch Mengirim beberapa perintah sebagai satu kumpulan pada kerangka kerja target yang didukung.

Program terhadap abstraksi ADO.NET ketika sebuah pustaka harus mendukung beberapa penyedia basis data. Gunakan tipe SqlClient ketika sebuah aplikasi menargetkan SQL Server dan membutuhkan fitur khusus penyedia.

Akses ke data terhubung

Akses terhubung menjaga koneksi tetap tersedia saat perintah berjalan dan saat aplikasi membaca hasilnya.

Permintaan umum mengikuti urutan ini:

  1. Buat SqlConnection dari string koneksi.
  2. Buka sambungan.
  3. Buat SqlCommand dan tambahkan nilai SqlParameter.
  4. Jalankan perintah .
  5. Memproses nilai skalar, jumlah baris yang terpengaruh, atau SqlDataReader.
  6. Lepaskan pembaca, perintah, dan koneksi.

Gunakan akses terhubung untuk sebagian besar API web, layanan, pekerja, dan aplikasi baris perintah. SqlDataReader mengalirkan baris dan biasanya menggunakan memori lebih sedikit daripada memuat seluruh hasil ke dalam DataSet.

Membuka dan melepas SqlConnection untuk setiap unit pekerjaan adalah pola yang umum. Connection pooling menggunakan kembali koneksi fisik yang mendasarinya. Jangan biarkan satu koneksi global tetap terbuka selama masa pakai aplikasi.

Akses data terputus

SqlDataAdaptermentransfer data antara SQL Server dan in-memory DataSet atau DataTable. Aplikasi dapat menutup koneksi saat membaca atau mengubah data dalam memori, lalu terhubung kembali untuk mengirim pembaruan.

Gunakan akses terputus saat Anda membutuhkan:

  • Pengikatan data ke DataSet atau DataTable.
  • Relasi dan batasan dalam memori.
  • Edit offline yang kemudian direkonsiliasi.
  • Kompatibilitas dengan aplikasi yang sudah ada yang dibangun di sekitar DataAdapters.

Untuk layanan berorientasi permintaan baru, mulai dengan SqlCommand dan SqlDataReader kecuali Anda membutuhkan model objek yang terputus.

Fitur khusus SQL Server

Microsoft. Data.SqlClient menambahkan API dan perilaku koneksi yang bukan bagian dari kontrak ADO.NET independen penyedia:

  • Autentikasi Microsoft Entra dan panggilan balik token akses.
  • Enkripsi ketat TDS 8.0 dan opsi sertifikat SQL Server.
  • Selalu terenkripsi dan enclave yang aman.
  • SqlBulkCopy untuk pemuatan data dengan throughput tinggi.
  • Parameter bernilai tabel.
  • Tipe data SQL Server, termasuk tipe JSON dan vektor.
  • Logika coba ulang yang dapat dikonfigurasi.
  • Diagnostik, statistik, dan penghitung SQL Server.
  • Opsi grup ketersediaan dan koneksi failover.

Menggunakan fitur-fitur ini mengaitkan kode tersebut dengan Microsoft. Data.SqlClient. Simpan kode spesifik penyedia di belakang batas akses data jika sisa aplikasi harus tetap independen dari penyedia.

Masa pakai objek dan konkurensi

Hapus koneksi, perintah, pembaca, transaksi, dan objek salinan massal dengan cepat. Gunakan await using dengan kode asinkron ketika sebuah tipe mengimplementasikan IAsyncDisposable.

SqlConnection, SqlCommand, SqlDataReader, dan SqlTransaction tidak mendukung penggunaan bersamaan dari beberapa thread. Berikan setiap operasi bersamaan koneksi sendiri dan gunakan connection pooling. Multiple Active Result Sets (MARS) memungkinkan lebih dari satu set hasil aktif pada satu koneksi, tetapi tidak membuat objek SqlClient menjadi thread-safe.

Paket dan ruang nama

Instal paket NuGet Microsoft.Data.SqlClient dan impor ruang nama Microsoft.Data.SqlClient. Driver dikirim secara independen dari .NET, sehingga fitur, rilis, dan jadwal dukungannya berbeda dari runtime .NET.

System.Data.SqlClient adalah penyedia yang lebih tua. Gunakan Microsoft. Data.SqlClient untuk pengembangan baru. Untuk aplikasi yang sudah ada, ikuti Migrasi dari System.Data.SqlClient ke Microsoft. Data.SqlClient.