φόντο
Στις πρώτες μέρες του .NET, το πλαίσιο System.Data ήταν ένα σημαντικό στοιχείο. Παρέχει έναν τρόπο δημιουργίας προγραμμάτων οδήγησης βάσης δεδομένων .NET, παρόμοια με τα αντικείμενα δεδομένων ActiveX της Visual Basic. Αν και το API είναι διαφορετικό, το όνομά του επαναχρησιμοποιείται, εξ ου και το ψευδώνυμο ADO .NET.
Μια βασική διαφορά μεταξύ ADO και ADO .NET (δηλαδή, System.Data) είναι το μοντέλο αντικειμένου. Στο ADO, συνήθως χρειάζεται να χρησιμοποιήσετε μόνο αντικείμενα Connection, Command και Recordset και το πρόγραμμα οδήγησης OleDB/ODBC κρύβει κάτι άλλο. Αυτό βελτιώνει την επαναχρησιμοποίηση κώδικα, αλλά είναι δύσκολο για τους προγραμματιστές να εκθέσουν ορισμένες δυνατότητες της βάσης δεδομένων.
Στο ADO .NET, μπορείτε επίσης να χρησιμοποιήσετε OleDB/ODBC, αλλά στις περισσότερες περιπτώσεις θα χρησιμοποιήσετε μια σειρά από για συγκεκριμένες βάσεις δεδομένων. Αυτές οι προέρχονται από τις DBConnection, DBCommand και DBDataReader, οι οποίες διατηρούν την επαναχρησιμοποίηση του αρχικού κώδικα. Αλλά επειδή είναι τύποι με έντονα ονόματα, πρέπει να αποτελούν ρητά μέρος της βιβλιοθήκης .NET.
Πιθανώς για να απλοποιηθεί η ανάπτυξη, τα προγράμματα οδήγησης SQL Server, OleDB και ODBC αποτελούν μέρος του πλαισίου System.Data. Αυτή η προσέγγιση ήταν αποδεκτή εκείνη την εποχή, αλλά δημιούργησε προβλήματα με τον τρέχοντα κύκλο ανάπτυξης του SQL Server.
Στην πραγματικότητα, οι κύκλοι κυκλοφορίας του SQL Server έχουν αλλάξει από 3 σε 5 χρόνια σε σχεδόν κάθε χρόνο. Οι νέες εκδόσεις απαιτούν συχνά ενημερώσεις για το πρόγραμμα οδήγησης .NET, κάτι που δεν είναι δυνατό εάν συνδέεται με τον τυπικό κύκλο κυκλοφορίας .NET.
Το πρώτο βήμα είναι να χωρίσετε τη βιβλιοθήκη System.Data. Το NET Core ολοκληρώνει αυτό το βήμα παρέχοντας ξεχωριστές βιβλιοθήκες για κάθε πρόγραμμα οδήγησης βάσης δεδομένων. Το επόμενο βήμα είναι να διαχωρίσετε πλήρως το πρόγραμμα οδήγησης του SQL Server από το .NET Core/Standard. Για να το κάνουν αυτό, δημιούργησαν το Microsoft.Data.SqlClient.
Αναβάθμιση σε Microsoft.Data.SqlClient
Για τους περισσότερους προγραμματιστές, η χρήση του Microsoft.Data.SqlClient θα είναι πολύ απλή, απλώς τροποποιώντας τη δήλωση χρήσης στην κορυφή κάθε κλάσης. Επιπλέον, χρησιμοποιεί τα ίδια ονόματα κλάσεων και API και παρέχει περίπου τις ίδιες δυνατότητες.
Για ελαφριά ORM όπως το Dapper ή το RepoDB, δεν απαιτούνται περαιτέρω αλλαγές.
Εάν οι προγραμματιστές χρησιμοποιούν ORM για τη διαχείριση συνδέσεων (π.χ. EF, NHibernate), πρέπει να περιμένουν για αναβαθμίσεις ORM.
Τα πιο ενοχλητικά είναι αυτά που αναμειγνύουν ORM. Εάν το ένα ORM χρησιμοποιεί Microsoft.Data.SqlClient και το άλλο χρησιμοποιεί το System.Data.SqlClient, δεν θα λειτουργεί ταυτόχρονα. Αυτό είναι ιδιαίτερα σημαντικό όταν εργάζεστε με κοινόχρηστα αντικείμενα SqlTransaction.
ευχρηστία
Η έκδοση 1.0 του Microsoft.Data.SqlClient είναι διαθέσιμη για αυτές τις πλατφόρμες:
- .NET Framework 4.6+
- .NET Core 2.1+
- .NET Πρότυπο 2.0+
Γνωστά προβλήματα
Δεν χρειάζεται όλοι να αναβαθμίσουν αμέσως. Αυτά τα γνωστά ζητήματα σημειώνονται στην τεκμηρίωση:
- Ο τύπος δεδομένων χρήστη (UDT) ενδέχεται να μην λειτουργεί με το Microsoft.Data.SqlClient.
- Το Azure Key Vault και το Microsoft.Data.SqlClient δεν διαθέτουν χώρο αποθήκευσης κλειδιών.
- Το Microsoft.Data.SqlClient δεν υποστηρίζει την επιλογή "Πάντα κρυπτογραφημένο" για ασφαλείς θύλακες.
- Μόνο το .NET Framework και το .NET Core υποστηρίζουν το Always Encrypted, το .NET Standard όχι, επειδή το .NET Standard δεν διαθέτει ορισμένες εξαρτήσεις κρυπτογράφησης.
Αρχικός σύνδεσμος:https://blog.csdn.net/weixin_39777464/article/details/111698467 |