Architektura ADO.NET s Microsoft. Data.SqlClient

ADO.NET je model přístupu k datům zabudovaný v .NET. Microsoft. Data.SqlClient implementuje tento model pro databáze kompatibilní se SQL Server a přidává specifické funkce pro SQL Server.

Vstupní stránka Microsoft. Data.SqlClient poskytuje mapu funkcí ovladačů a produkční základnu. Tento článek vysvětluje, jak ovladač zapadá do ADO.NET.

Abstrakce ADO.NET a typy SqlClientu

ADO.NET definuje abstrakce nezávislé na poskytovateli ve jmenném System.Data.Common prostoru. Microsoft. Data.SqlClient poskytuje konkrétní implementace.

Abstrakce ADO.NET Typ SqlClient Purpose
DbConnection SqlConnection Otevírá logické spojení s jednou databází.
DbCommand SqlCommand Spustí SQL text nebo uloženou proceduru.
DbParameter SqlParameter Odesílá napsanou hodnotu odděleně od textu příkazu.
DbDataReader SqlDataReader Streamuje řádky výsledků ze serveru.
DbTransaction SqlTransaction Seskupuje příkazy do jedné atomické transakce.
DbDataAdapter SqlDataAdapter Vyplňuje a aktualizuje odpojené objekty DataSet a DataTable.
DbBatch SqlBatch Odesílá více příkazů v jedné dávce pro podporované cílové frameworky.

Programujte proti abstrakcím ADO.NET, když knihovna musí podporovat více poskytovatelů databází. Používejte typy SqlClient, když aplikace cílí na SQL Server a potřebuje specifické funkce pro poskytovatele.

Přístup k připojeným datům

Připojený přístup udržuje spojení dostupné, dokud se spustí příkaz a aplikace čte jeho výsledky.

Běžný požadavek následuje tuto sekvenci:

  1. Vytvořte SqlConnection z připojovacího řetězce.
  2. Otevřete připojení.
  3. Vytvořte SqlCommand a přidejte hodnoty SqlParameter.
  4. Spusťte příkaz .
  5. Zpracujte skalární hodnotu, počet ovlivněných řádků nebo SqlDataReader.
  6. Uvolněte čtečku, příkaz a připojení.

Používejte připojený přístup pro většinu webových API, služeb, pracovníků a příkazových aplikací. SqlDataReaderstreamuje řádky a obvykle využívá méně paměti než načítání celého výsledku do .DataSet

Pro každou jednotku práce otevřít a uvolnit SqlConnection je běžný postup. Sdružování připojení opětovně využívá podkladové fyzické připojení. Nenechávejte jedno globální spojení otevřené po celou dobu existence aplikace.

Přístup k datům bez připojení

SqlDataAdapterpřenáší data mezi SQL Server a in-memory DataSet nebo DataTable. Aplikace může připojení uzavřít během čtení nebo změny dat v paměti a poté se znovu připojit a odesílat aktualizace.

Používejte odpojený přístup, když potřebujete:

  • Datová vazba na DataSet nebo DataTable.
  • Relace a omezení v paměti.
  • Offline úpravy, které jsou později synchronizovány.
  • Kompatibilita s existující aplikací postavenou na DataAdapterech.

U nových služeb orientovaných na požadavky začněte s SqlCommand a SqlDataReader, pokud nepotřebujete odpojený objektový model.

Specifické funkce pro SQL Server

Microsoft.Data.SqlClient přidává rozhraní API a chování připojení, které nejsou součástí rozhraní ADO.NET nezávislého na poskytovateli:

  • Microsoft Entra autentizace a zpětné volání přístupových tokenů.
  • TDS 8.0 přísné šifrování a možnosti certifikace SQL Server.
  • Vždy šifrované a zabezpečené enklávy.
  • SqlBulkCopy pro vysokorychlostní načítání dat.
  • Parametry hodnot tabulky.
  • SQL Server datové typy, včetně JSON a vektorových typů.
  • Konfigurovatelná logika opakovaných pokusů.
  • Diagnostika, statistiky a čítače SQL Server.
  • Dostupnost, skupina a možnosti připojení pro záložní přestup.

Použití těchto funkcí propojuje tento kód s Microsoft. Data.SqlClient. Pokud musí zbytek aplikace zůstat nezávislý na poskytovateli, ponechte kód specifický pro poskytovatele za hranicí přístupu.

Životnost objektu a souběžnost

Zlikvidujte spojení, příkazy, čtečky, transakce a hromadně kopírujte objekty okamžitě. Použijte await using s asynchronním kódem, pokud typ implementuje IAsyncDisposable.

SqlConnection, SqlCommand, SqlDataReader, a SqlTransaction nepodporují současné použití z více vláken. Každé souběžné operaci přiřaďte vlastní připojení a využijte sdružování připojení. Multiple Active Result Sets (MARS) umožňuje více než jednu aktivní sadu výsledků na spojení, ale nečiní objekty SqlClient bezpečnými pro vlákna.

Balíčky a jmenné prostory

Nainstalujte balíček Microsoft.Data.SqlClientNuGet a importujte obor názvů Microsoft.Data.SqlClient. Ovladač je dodáván nezávisle na .NET, takže jeho funkce, vydání a podpůrné plány se liší od běhu .NET.

System.Data.SqlClient je starší poskytovatel. Používejte Microsoft. Data.SqlClient pro nový vývoj. Pro existující aplikaci postupujte podle Migrate ze System.Data.SqlClient do Microsoft. Data.SqlClient.