LINQ-to-SQL CompiledQuery.Compile () με Ενημέρωση, Διαγραφή, Εισαγωγή;

ψήφοι
6

Ολα,

Έτσι έχω όλα ερωτημάτων επιλογής μου στην LINQ-to-SQL μετατραπεί σε χρήση CompiledQueries να επιταχυνθούν τα πράγματα. Δουλεύει άψογα μέχρι στιγμής για επιλεγμένα δηλώσεις, αλλά δεν ήταν σε θέση να καταλάβω πώς να προ-κατάρτιση εισαγωγή, ενημέρωση ή διαγραφή καταστάσεις.

Σύμφωνοι, όταν την εισαγωγή, διαγραφή ή ενημέρωση σε LINQ-to-SQL, θα πρέπει να χρησιμοποιήσετε το μοντέλο αντικειμένου. Αλλά προφανώς κάπου στην πορεία δημιουργεί ένα ερώτημα, το οποίο θα ήταν ωραίο να προ-κατάρτιση και να αποθηκεύουν σε ένα στατικό μέλος.

Είναι δυνατόν; Ποια είναι η απόδοση LINQ, όπως για ενημερώσεις, διαγράφει και ένθετα, όταν δεν προ-μεταγλωττισμένα της; Θα μπορούσα να δω ότι είναι πολύ πιο γρήγορα από ό, τι τα επιλέγει, γιατί αυτό που κάνουν από κάτω είναι πολύ απλούστερη και λιγότερο «δυναμική» ...

Δημοσιεύθηκε 09/12/2008 στις 22:08
πηγή χρήστη
Σε άλλες γλώσσες...                            


3 απαντήσεις

ψήφοι
8

Υπάρχει μια μεγάλη διαφορά. LINQ-to-SQL ερωτημάτων επιλογής μπορεί να είναι μεγάλες σύνθετες εκφράσεις δέντρα. Της αυτά που μπορεί να λάβει κάποια «σύνταξη». Στην περίπτωση αυτή συνενώνονται σε κάποιο T-SQL που μπορεί να τρέξει εναντίον του SQL Server. Έτσι είναι λογικό να αποθηκεύουν προσωρινά το αποτέλεσμα μιας πράξης, έτσι ώστε να μπορεί να επαναχρησιμοποιηθεί.

Ωστόσο άλλες Διαγραφή, ενημέρωση, και Εισαγωγή είναι απλές λειτουργίες που δεν απαιτούν ένα δέντρο έκφραση για να μετατραπεί σε T-SQL (το ίδιο LINQ είναι όλα σχετικά με την αναζήτηση). Του ακριβώς ατυχές το γεγονός ότι έχουμε εκπαιδευτεί να σκέφτονται SQL κώδικα που εκτελεί αυτές τις άλλες λειτουργίες ως «ερωτήματα», δεν είμαστε actuall ζητούν οποιαδήποτε πληροφορία.

Οι πράξεις αυτές ορίζονται μόνο από την DataContext όχι από LINQ ως εκ τούτου, τον κωδικό για να εκτελέσετε αυτές τις λειτουργίες είναι ήδη συνταχθεί.

Απαντήθηκε 09/12/2008 στις 22:46
πηγή χρήστη

ψήφοι
3

Νομίζω ότι από τις τρεις μόνο ένθετο θα είχε νόημα να είναι σε θέση να συγκεντρώσει και επαναχρησιμοποίηση γιατί διαγραφής είναι κοινότοπα απλή (ΔΙΑΓΡΑΦΗ ΑΠΟ τραπέζι όπου Βασικά ...) και ενημερωμένη έκδοση ενημερώνει μόνο τα πεδία που έχουν αλλάξει και έτσι διαφέρει ανάλογα με τη λειτουργία ενημέρωσης.

[) Αμιέν

Απαντήθηκε 10/12/2008 στις 07:03
πηγή χρήστη

ψήφοι
0

L2S χρησιμοποιεί «sp_executesql», ώστε μετά να εκτελέσετε την πρώτη φορά που θα είναι στη μνήμη cache του προγράμματος εκτέλεσης αποθηκευμένη διαδικασία. Μεταγενέστερες τρέχει (το ίδιο ερώτημα - όχι ίδιες παραμέτρους που) θα χρησιμοποιήσετε ξανά το συνταχθεί σχέδιο από τη μνήμη cache. Έτσι, αυτό που ζητάμε είναι automagically χειρίζεται SQL Server «πίσω από τα παρασκήνια».

Απαντήθηκε 10/12/2008 στις 12:43
πηγή χρήστη

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more