
Χρησιμοποιώ τη στιγμή ένα DataTable για να πάρει τα αποτελέσματα από μια βάση δεδομένων που μπορώ να χρησιμοποιήσω στον κώδικά μου.


Ωστόσο, πολλοί παράδειγμα στον ιστό εκπομπή χρησιμοποιώντας ένα DataSet αντί και την πρόσβαση στο τραπέζι (-α), μέσω της μεθόδου συλλογές.


Υπάρχει κάποιο πλεονέκτημα, απόδοση σοφό ή με άλλο τρόπο, από τη χρήση DataSets ή DataTables ως μέθοδος αποθήκευσης για τα αποτελέσματα SQL;

 
Datatable vs συνόλου δεδομένων
==============================



Είναι πραγματικά εξαρτάται από το είδος των δεδομένων που φέρνετε πίσω. Από ένα σύνολο δεδομένων είναι (στην πραγματικότητα) απλά μια συλλογή από DataTable αντικείμενα, μπορείτε να επιστρέψετε πολλαπλές ξεχωριστές σειρές δεδομένων σε ένα ενιαίο, και ως εκ τούτου πιο διαχειρίσιμη, αντικείμενο. 


Απόδοση-σοφός, έχετε περισσότερες πιθανότητες να πάρει αναποτελεσματικότητα από unoptimized ερωτήματα από ό, τι από το «λάθος» επιλογή του κατασκευάσματος .NET. Τουλάχιστον, αυτό είναι η εμπειρία μου.

 

Μια σημαντική διαφορά είναι ότι DataSets μπορεί να κρατήσει πολλούς πίνακες και μπορείτε να καθορίζουν τις σχέσεις μεταξύ των πινάκων αυτών. 


Εάν επιστρέφετε ένα μόνο αποτέλεσμα που αν και θα ήθελα να πιστεύω ένα DataTable θα είναι πιο βελτιστοποιηθεί. Θα ήθελα να πιστεύω πρέπει να υπάρχει κάποια γενικά (χορηγούνται μικρές) για να προσφέρει τη λειτουργικότητα ενός συνόλου δεδομένων κάνει και να παρακολουθείτε πολλαπλές DataTables εκεί.

 

σε 1.x χρησιμοποιείται για να είναι τα πράγματα DataTables δεν μπορούσε να κάνει οποίο DataSets θα μπορούσε (δεν θυμάμαι ακριβώς) εκεί. Το μόνο που άλλαξε στην 2.x. Η εικασία μου είναι ότι είναι ο λόγος που πολλοί παραδείγματα εξακολουθούν να χρησιμοποιούν σύνολα δεδομένων. DataTables θα πρέπει να είναι πιο γρήγορα και είναι πιο ελαφρύ. Αν είστε τραβώντας ένα μόνο resultset, η καλύτερη επιλογή σας της μεταξύ των δύο.

 

Ένα χαρακτηριστικό του συνόλου δεδομένων είναι ότι αν μπορείτε να καλέσετε πολλαπλές επιλέξτε δηλώσεις αποθηκευμένες διαδικασίες σας, το σύνολο δεδομένων θα έχει ένα DataTable για το καθένα.

 

Υπάρχουν κάποιες βελτιστοποιήσεις που μπορείτε να χρησιμοποιήσετε όταν συμπληρώσετε ένα DataTable, όπως καλώντας BeginLoadData (), εισάγοντας τα δεδομένα, στη συνέχεια, καλώντας EndLoadData (). Αυτό απενεργοποιεί κάποια εσωτερική συμπεριφορά εντός του DataTable, όπως η συντήρηση του δείκτη, κλπ Δείτε [αυτό το άρθρο](http://www.objectsharp.com/cs/blogs/datasetfaq/archive/2004/04/18/367.aspx) για περισσότερες λεπτομέρειες.

 

Μια DataTable αντικείμενο αναπαριστά πίνακα δεδομένων ως ένα in-μνήμη, μορφή πίνακα cache του σειρές, στήλες, και των περιορισμών. Το σύνολο δεδομένων αποτελείται από μια συλλογή από DataTable αντικείμενα που μπορείτε να σχετίζονται μεταξύ τους με αντικείμενα DataRelation.

 

Όταν έχουμε να κάνουμε μόνο με ένα ενιαίο πίνακα ούτως ή άλλως, η μεγαλύτερη πρακτική διαφορά έχω διαπιστώσει είναι ότι DataSet έχει μια μέθοδο «HasChanges», αλλά DataTable δεν το κάνει. Και οι δύο έχουν ένα «GetChanges», ωστόσο, ώστε να μπορείτε να το χρησιμοποιήσετε και δοκιμών για μηδενική.

 