latar
Pada hari-hari awal .NET, kerangka kerja System.Data adalah komponen penting. Ini menyediakan cara untuk membuat driver database .NET, mirip dengan Objek Data ActiveX Visual Basic. Meskipun API-nya berbeda, namanya digunakan kembali, oleh karena itu julukan ADO .NET.
Salah satu perbedaan utama antara ADO dan ADO .NET (yaitu, System.Data) adalah model objek. Di ADO, Anda biasanya hanya perlu menggunakan objek Connection, Command, dan Recordset, dan driver OleDB/ODBC menyembunyikan sesuatu yang lain. Ini meningkatkan penggunaan kembali kode, tetapi sulit bagi pengembang untuk mengekspos beberapa fitur database.
Di ADO .NET, Anda juga dapat menggunakan OleDB/ODBC, tetapi dalam banyak kasus Anda akan menggunakan serangkaian kelas khusus database. Kelas-kelas ini berasal dari DBConnection, DBCommand, dan DBDataReader, yang mempertahankan penggunaan kembali kode asli. Tetapi karena mereka adalah jenis yang sangat bernama, mereka harus secara eksplisit menjadi bagian dari pustaka .NET.
Mungkin untuk menyederhanakan pengembangan, driver SQL Server, OleDB, dan ODBC semuanya adalah bagian dari kerangka kerja System.Data. Pendekatan ini dapat diterima pada saat itu, tetapi menimbulkan masalah dengan siklus pengembangan SQL Server saat ini.
Faktanya, siklus rilis SQL Server telah berubah dari 3 hingga 5 tahun menjadi hampir setiap tahun. Rilis baru sering kali memerlukan pembaruan ke driver .NET, yang tidak mungkin dilakukan jika terkait dengan siklus rilis standar .NET.
Langkah pertama adalah membagi pustaka System.Data. NET Core menyelesaikan langkah ini dengan menyediakan pustaka terpisah untuk setiap driver database. Langkah selanjutnya adalah sepenuhnya memisahkan driver SQL Server dari .NET Core/Standard. Untuk melakukan ini, mereka membuat Microsoft.Data.SqlClient.
Tingkatkan ke Microsoft.Data.SqlClient
Bagi sebagian besar pengembang, menggunakan Microsoft.Data.SqlClient akan sangat sederhana, cukup memodifikasi pernyataan using di bagian atas setiap kelas. Plus, ia menggunakan nama kelas dan API yang sama, dan menyediakan fitur yang kira-kira sama.
Untuk ORM ringan seperti Dapper atau RepoDB, tidak diperlukan perubahan lebih lanjut.
Jika pengembang menggunakan ORM untuk mengelola koneksi (misalnya, EF, NHibernate), mereka harus menunggu peningkatan ORM.
Yang lebih merepotkan adalah yang mencampur OMR. Jika satu ORM menggunakan Microsoft.Data.SqlClient dan yang lainnya menggunakan System.Data.SqlClient, itu tidak akan berfungsi pada saat yang sama. Ini sangat penting saat bekerja dengan objek SqlTransaction bersama.
Kegunaan
Versi 1.0 dari Microsoft.Data.SqlClient tersedia untuk platform berikut:
- Kerangka Kerja .NET 4.6+
- .NET Inti 2.1+
- .NET Standar 2.0+
Masalah umum
Tidak semua orang perlu segera meningkatkan. Masalah yang diketahui ini dicatat dalam dokumentasi:
- Tipe Data Pengguna (UDT) mungkin tidak berfungsi dengan Microsoft.Data.SqlClient.
- Azure Key Vault dan Microsoft.Data.SqlClient tidak memiliki penyimpanan kunci.
- Microsoft.Data.SqlClient tidak mendukung Always Encrypted untuk enklave yang aman.
- Hanya .NET Framework dan .NET Core yang mendukung Always Encrypted, .NET Standard tidak, karena .NET Standard tidak memiliki beberapa dependensi enkripsi.
Tautan asli:https://blog.csdn.net/weixin_39777464/article/details/111698467 |