Microsoft. Data.SqlClient névtér és kompatibilitás

A Microsoft.Data.SqlClient névtér tartalmazza a támogatott .NET adatszolgáltatót SQL Server-kompatibilis adatbázisokhoz. A(z) System.Data.SqlClient egyik forkjaként indult, és megőrzi a jól ismert ADO.NET programozási modellt, miközben a .NET-futtatókörnyezettől függetlenül tesz elérhetővé új SQL Server-funkciókat.

Új fejlesztéshez használható Microsoft.Data.SqlClient .

Telepítse és importálja a névteret

Add hozzá a NuGet csomagot:

dotnet add package Microsoft.Data.SqlClient

Importáljuk a névteret:

using Microsoft.Data.SqlClient;

A legtöbb alkalmazás használ SqlConnection, SqlCommand, SqlParameter, SqlDataReader, és SqlTransaction. A teljes nyilvános felületért lásd a Microsoft. Data.SqlClient API hivatkozást.

Kapcsolat az ADO.NET-hez

Az ADO.NET a .NET-be beépített adathozzáférési modell. Definiálja a szolgáltatótól független absztrakciókat a System.Data.Common névtérben, és a Microsoft.Data.SqlClient biztosítja a konkrét megvalósításokat.

ADO.NET absztrakció SqlClient típus Alkalmazás célja
DbConnection SqlConnection Logikus kapcsolatot nyit egy adatbázishoz.
DbCommand SqlCommand Transact-SQL (T-SQL) szöveget vagy tárolt eljárást hajt végre.
DbParameter SqlParameter Külön küld egy gépelt értéket a parancsszövegtől.
DbDataReader SqlDataReader Az eredménysorokat folyamatosan továbbítja a szerverről.
DbTransaction SqlTransaction A parancsokat egy tranzakcióba csoportosítja, amely egységként véglegesül vagy visszagörgetődik.
DbDataAdapter SqlDataAdapter Kitölti és frissíti a kapcsolat nélküli DataSet és DataTable objektumokat.
DbBatch SqlBatch Több parancsot küld egy tételben a támogatott célkeretrendszereken.

Microsoft. Data.SqlClient SQL Server-specifikus API-kat is kínál, például:

  • SqlBulkCopy
  • SqlConnectionStringBuilder
  • SqlConfigurableRetryFactory
  • SqlDependency
  • SQL Server-specifikus hitelesítési, titkosítási és adattípus-támogatás

Programozz az ADO.NET absztrakciók ellen, amikor egy könyvtárnak több adatbázis-szolgáltatót kell támogatnia. Használd a SqlClient típusokat, amikor egy alkalmazás az SQL Server-t célozza meg, és szolgáltató-specifikus funkciókra van szükség, mint például Microsoft Entra hitelesítés, Always Encrypted, tömeges másolás, táblázatértékű paraméterek vagy konfigurálható újrapróbálkozási logika. Ha az alkalmazás többi részének szolgáltatótól függetlennek kell maradnia, tartsd a szolgáltató-specifikus kódot egy adathozzáférési határ mögött.

Csatlakoztatott és offline hozzáférés

A kapcsolódó hozzáférés nyitva tartja a kapcsolatot, amíg egy parancs fut, és amíg az alkalmazás olvassa az eredményeket. Egy tipikus kérés ezt a sorrendet követi:

  1. Hozz létre egy SqlConnection kapcsolati sztringből, és nyisd meg.
  2. Hozz létre egy SqlCommand elemet, és adj hozzá SqlParameter értékeket.
  3. Hajtsa végre a parancsot.
  4. Dolgozz fel egy skalárértéket, az érintett sorok számát vagy egy SqlDataReader.
  5. Kezeld az olvasót, parancsot és kapcsolatot.

A legtöbb webes API, szolgáltatás, munkatárs és parancssoros alkalmazás esetén használj csatlakoztatott hozzáférést. SqlDataReader sorokat streamel, és általában kevesebb memóriát használ, mint a teljes eredmény betöltése egy DataSet-be.

A leválasztott hozzáférés a(z) SqlDataAdapter adatok másolására használja egy memóriabeli DataSet vagy DataTable elembe. Az alkalmazás lezárhatja a kapcsolatot, miközben olvassa vagy módosítja a memóriában lévő adatokat, majd újra csatlakozhat, hogy frissítéseket küldhessen. Használd adatkötésre, memórián belüli kapcsolatokhoz és megszorításokhoz, offline szerkesztésekhez, amelyeket később szinkronizálsz, vagy egy meglévő, DataAdapter objektumokon alapuló alkalmazáshoz. Új, kérésorientált szolgáltatásokhoz kezdje ezzel: SqlCommand és SqlDataReader.

objektum élettartama és párhuzamosság

Nyisson meg és szabadítson fel egy SqlConnection-t minden munkaegységhez. A kapcsolatpoolozás újrahasznosítja a mögöttes fizikai kapcsolatot, ezért ne tarts nyitva egyetlen globális kapcsolatot az alkalmazás élettartama alatt. Azonnal szabadítsd el a kapcsolatokat, parancsokat, olvasókat, tranzakciókat és tömeges másolási objektumokat. Aszinkron kódban a célkeretrendszeren a(z) IAsyncDisposable implementáló típusokhoz használjon await using elemet, például a .NET rendszeren a(z) SqlConnection és SqlDataReader esetében, valamint hagyományos using elemet azokhoz a típusokhoz, amelyek csak a(z) IDisposable elemet implementálják, például a(z) SqlBulkCopy esetében.

SqlConnection, SqlCommand, SqlDataReader, és SqlTransaction nem támogatja több szál egyidejű használatát. Minden egyidejű műveletnek adjunk saját kapcsolatot, és támaszkodjunk a csatlakozási poolingra. A Multiple Active Result Set (MARS) engedélyezi több aktív eredményhalmazt egy kapcsolaton, de nem teszi a SqlClient objektumokat szálbiztonsággá.

Kapcsolat a System.Data.SqlClient-hez

System.Data.SqlClientez a régebbi szolgáltató, amely a .NET Framework-et és a korábbi .NET kiadásokat is tartalmazza. Microsoft.Data.SqlClient Sok azonos típusnevet használ, de eltérő csomagokkal, névterekkel, alapértelmezéseivel, funkcióival és támogató szabályzataival rendelkezik.

Ne hivatkozz mindkét szolgáltatóra az új alkalmazási kódban. A két csomagból azonos nevű típusok nem cserélhetők. Egy System.Data.SqlClient.SqlConnection például nem adható át ott, ahol egy Microsoft.Data.SqlClient.SqlConnection szükséges.

A migráció általában a csomag hozzáadásával Microsoft.Data.SqlClient és a névtér hivatkozások módosításával kezdődik, de át kell nézned a kapcsolat titkosítását, paramétereit, konfigurációját, tranzitív függőségeket és futási viselkedést is. Az üzembe helyezés előtt kövesse a Migrálás a System.Data.SqlClient szolgáltatásról a Microsoft.Data.SqlClient szolgáltatásra című útmutatót.

Verziók kompatibilitása

A driver package verzió független az alkalmazás .NET verziójától és az adatbázis motor verziójától. Nézd meg mindhármat:

Komponens Mit kell ellenőrizni?
Microsoft.Data.SqlClient A kiadási vonal támogatott, és tartalmazza azokat a funkciókat, amelyeket az alkalmazásod használ.
.NET vagy .NET Framework Az alkalmazás egy olyan futási időre célozza meg, amelyet az adott driver kiadás támogat.
SQL Server-kompatibilis adatbázis A meghajtó kiadás támogatja az adatbázis verziót, a szerver pedig bármilyen kért protokollfunkciót, például a TDS 8.0-t.

Az aktuális támogatási mátrixokat itt találja: SqlClient driver support lifecycle.

Verzióspecifikus módosítások

A driver release-ek API-kat adhatnak hozzá, opcionális függőségeket mozgathatnak, és biztonságos alapértelmezetteket módosíthatnak. Nézd át a változtatásokat minden kisebb vagy nagyobb frissítés előtt.

Ide sorolhatóak például a következők:

  • A 4.0-s verzióban a(z) Encrypt alapértelmezett értéke true lett.
  • Az 5.0-s verzió bevezette a(z) SqlConnectionEncryptOption és Encrypt=Strict elemeket a TDS 8.0-hoz.
  • Az 5.2-es verzióban bevezetésre került a(z) SqlBatch a támogatott modern .NET-célplatformokon.
  • A 7.0-s verzió az illesztőprogram által biztosított Microsoft Entra-hitelesítést a(z) Microsoft.Data.SqlClient.Extensions.Azure elembe helyezte át.

Lásd: A Microsoft.Data.SqlClient újdonságai a kibocsátási megjegyzésekre mutató hivatkozásokért és a frissítési összefoglalóért.

Néhány funkció a fő névtéren kívüli típusokat vagy opcionális csomagokat használ.

Névtér vagy csomag Alkalmazás célja
Microsoft.Data.SqlClient.Server A(z) SqlDataRecord és SqlMetaData SqlClient-megvalósításai.
Microsoft.Data.SqlTypes SqlClient-specifikus típusok, mint SqlFileStream, SqlJson, és SqlVector<T>.
Microsoft.Data.SqlClient.Diagnostics Erősen típusozott diagnosztikai esemény hasznos terhek.
Microsoft.Data.SqlClient.Extensions.Azure Az illesztőprogram által biztosított Microsoft Entra-hitelesítés a 7.0-s és újabb verziókhoz.
Microsoft.Data.SqlClient.AlwaysEncrypted.AzureKeyVaultProvider Az Azure Key Vault integrációja az Always Encryptedhez

Ne csak a névtérből következtess a csomagkövetelményeket. Kövesd a funkciócikket és a NuGet csomagfüggőségi információkat a használt illesztőprogramos verzióhoz.