fond
În primele zile ale .NET, cadrul System.Data a fost o componentă importantă. Oferă o modalitate de a crea drivere de bază de date .NET, similară cu ActiveX Data Objects din Visual Basic. Deși API-ul este diferit, numele său este reutilizat, de aici și porecla ADO .NET.
O diferență cheie între ADO și ADO .NET (adică System.Data) este modelul obiectului. În ADO, de obicei trebuie să folosești doar obiectele Connection, Command și Recordset, iar driverul OleDB/ODBC ascunde altceva. Acest lucru îmbunătățește reutilizarea codului, dar este dificil pentru dezvoltatori să expună unele caracteristici ale bazei de date.
În ADO .NET, poți folosi și OleDB/ODBC, dar în majoritatea cazurilor vei folosi o serie de clase specifice bazei de date. Aceste clase sunt derivate din DBConnection, DBCommann și DBDataReader, care mențin reutilizabilitatea codului original. Dar pentru că sunt tipuri cu denumire puternică, ele trebuie să facă parte explicit din biblioteca .NET.
Probabil pentru a simplifica dezvoltarea, driverele SQL Server, OleDB și ODBC fac parte din cadrul System.Data. Această abordare era acceptabilă la acea vreme, dar crea probleme cu ciclul actual de dezvoltare SQL Server.
De fapt, ciclurile de lansare SQL Server s-au schimbat de la 3 la 5 ani la aproape fiecare an. Noile versiuni necesită adesea actualizări ale driverului .NET, ceea ce nu este posibil dacă este legat de ciclul standard .NET.
Primul pas este divizarea bibliotecii System.Data. NET Core realizează acest pas oferind biblioteci separate pentru fiecare driver de bază de date. Următorul pas este separarea completă a driverului SQL Server de .NET Core/Standard. Pentru a face acest lucru, au creat Microsoft.Data.SqlClient.
Upgrade la Microsoft.Data.SqlClient
Pentru majoritatea dezvoltatorilor, utilizarea Microsoft.Data.SqlClient va fi foarte simplă, modificând doar instrucțiunea using din partea de sus a fiecărei clase. În plus, folosește aceleași nume de clase și API-uri și oferă aproximativ aceleași funcționalități.
Pentru ORM-uri ușoare precum Dapper sau RepoDB, nu sunt necesare alte modificări.
Dacă dezvoltatorii folosesc ORM-uri pentru a gestiona conexiunile (de exemplu, EF, NHibernate), trebuie să aștepte actualizările ORM.
Cele mai problematice sunt cele care combină ORM-uri. Dacă un ORM folosește Microsoft.Data.SqlClient și celălalt folosește System.Data.SqlClient, nu va funcționa în același timp. Acest lucru este deosebit de important atunci când lucrezi cu obiecte SqlTransaction partajate.
utilizabilitate
Versiunea 1.0 a Microsoft.Data.SqlClient este disponibilă pentru următoarele platforme:
- .NET Framework 4.6+
- .NET Core 2.1+
- .NET Standard 2.0+
Probleme cunoscute
Nu toată lumea trebuie să facă upgrade imediat. Aceste probleme cunoscute sunt menționate în documentație:
- Tipul de date utilizator (UDT) poate să nu funcționeze cu Microsoft.Data.SqlClient.
- Azure Key Vault și Microsoft.Data.SqlClient nu au un depozit de chei.
- Microsoft.Data.SqlClient nu suportă Always Encrypted pentru enclave securizate.
- Doar .NET Framework și .NET Core suportă Always Encrypted, .NET Standard nu o face, deoarece .NET Standard nu are unele dependențe de criptare.
Link original:https://blog.csdn.net/weixin_39777464/article/details/111698467 |