Αυτό το άρθρο είναι ένα άρθρο καθρέφτη της αυτόματης μετάφρασης, κάντε κλικ εδώ για να μεταβείτε στο αρχικό άρθρο.

Άποψη: 30236|Απάντηση: 1

[Πηγή] Το EF ορίζει το αναγνωριστικό πρωτεύοντος κλειδιού στον αυτοαναπτυσσόμενο τύπο guid

[Αντιγραφή συνδέσμου]
Δημοσιεύτηκε στις 4/11/2016 1:27:38 μ.μ. | | | |


Ο κωδικός οντότητας της οντότητας έχει ως εξής:



Ο κωδικός εισαγωγής έχει ως εξής:



Ορίζουμε μόνο την τιμή του ονόματος και δεν εκχωρούμε τιμή στο id, ας ρίξουμε μια ματιά στο τι είναι η δήλωση sql που δημιουργείται??? , ως εξής:

exec sp_executesql N'DECLARE @generated_keys table([Id] uniqueidentifier)
INSERT [dbo]. [Καρτέλα δοκιμής] ([Όνομα])
Το OUTPUT εισήχθη. [id] INTO @generated_keys
ΤΙΜΈΣ (@0)
SELECT t.[Id]
ΑΠΟ @generated_keys AS g JOIN [dbo]. [Καρτέλα δοκιμής] AS t ON g.[Id] = t.[Id]
ΟΠΟΥ @@ROWCOUNT > 0',N'@0 nvarchar(32)', @0=N' architectwww.itsvse.com'


Διαπιστώσαμε ότι ο πίνακας INSERT TestTab εισάγει μόνο το πεδίο Όνομα, το Id έχει προεπιλεγμένη τιμή??? Διαπιστώσαμε ότι

Το ef με βοήθησε να ορίσω τον προεπιλεγμένο τύπο τιμής του πρωτεύοντος κλειδιού Id, την προεπιλεγμένη τιμή ή τη δέσμευση "(newsequentialid())" και χρησιμοποίησε τη συνάρτηση newsequentialid(), η οποία παρουσιάζεται ως εξής:


1.:Το μεγαλύτερο πλεονέκτημα της συνάρτησης newsequentialid έναντι της συνάρτησης newid είναι ότι εάν δημιουργήσετε ένα ευρετήριο σε ένα πεδίο UNIQUEIDENTIFIER, η νέα τιμή που δημιουργείται χρησιμοποιώντας το newid δεν είναι σταθερή, επομένως η νέα τιμή προκαλεί την αλλαγή στο δέντρο ευρετηρίου B+ να είναι τυχαία. Εάν η νέα τιμή που παράγεται από το newsequentialid είναι κανονική, τότε η αλλαγή του δέντρου ευρετηρίου B+ είναι κανονική. Η κανονικότητα και η παρατυπία οδηγούν σε βελτιώσεις απόδοσης.

2: Το UNIQUEIDENTIFIER είναι ένα πολύ βολικό πράγμα ως πρωτεύον κλειδί, το οποίο έχει αναντικατάστατα πλεονεκτήματα σε λειτουργίες όπως η συγχώνευση δεδομένων
Ωστόσο, λόγω της αποκέντρωσης των συνηθισμένων GUID, εάν το πρωτεύον κλειδί προστεθεί σε ένα ομαδοποιημένο ευρετήριο, θα είναι πολύ λιγότερο αποτελεσματικό κατά την εισαγωγή εγγραφών

Ο SQL SERVER 2005 προσθέτει μια νέα συνάρτηση που ονομάζεται NEWSEQUENTIALID, την οποία εξηγεί το MSDN:
Δημιουργήστε ένα GUID στον καθορισμένο υπολογιστή που είναι μεγαλύτερο από οποιοδήποτε GUID που δημιουργήθηκε προηγουμένως από τη συνάρτηση.
NEWSEQUENTIALID() δεν μπορεί να αναφερθεί στο ερώτημα.
Σημείωση: Αυτό σημαίνει ότι μπορεί να χρησιμοποιηθεί μόνο ως ΠΡΟΕΠΙΛΟΓΗ ΤΙΜΗ μιας στήλης βάσης δεδομένων και δεν μπορεί να εκτελέσει προτάσεις όπως SELECT NEWSEQUENTIALID().
Το GUID που δημιουργείται από τη συνάρτηση NEWSEQUENTIALID() είναι μοναδικό στον συγκεκριμένο υπολογιστή μόνο εάν ο υπολογιστής δεν διαθέτει κάρτα δικτύου.
Σημείωση: Αυτή η πρόταση είναι λάθος, θα πρέπει να είναι ότι μόνο όταν ο υπολογιστής διαθέτει κάρτα δικτύου, το GUID που δημιουργείται είναι μοναδικό στον κόσμο
Μπορείτε να χρησιμοποιήσετε τη συνάρτηση NEWSEQUENTIALID() για να δημιουργήσετε ένα GUID για να μειώσετε τη διένεξη σελίδας στο ευρετήριο επιπέδου φύλλου.





Προηγούμενος:Η καρτέλα EasyUI Control προσθέτει μια λειτουργία εναλλαγής
Επόμενος:c#/.Net συλλογή πίνακα ανά τιμή επιπέδου
Δημοσιεύτηκε στις 1/2/2018 10:43:26 π.μ. |
Ναι ευχαριστώ! Οι ικανότητες του ιδιοκτήτη είναι πολύ δύσκολες! Σκληρός
Αποκήρυξη:
Όλο το λογισμικό, το υλικό προγραμματισμού ή τα άρθρα που δημοσιεύονται από το Code Farmer Network προορίζονται μόνο για μαθησιακούς και ερευνητικούς σκοπούς. Το παραπάνω περιεχόμενο δεν θα χρησιμοποιηθεί για εμπορικούς ή παράνομους σκοπούς, άλλως οι χρήστες θα υποστούν όλες τις συνέπειες. Οι πληροφορίες σε αυτόν τον ιστότοπο προέρχονται από το Διαδίκτυο και οι διαφορές πνευματικών δικαιωμάτων δεν έχουν καμία σχέση με αυτόν τον ιστότοπο. Πρέπει να διαγράψετε εντελώς το παραπάνω περιεχόμενο από τον υπολογιστή σας εντός 24 ωρών από τη λήψη. Εάν σας αρέσει το πρόγραμμα, υποστηρίξτε γνήσιο λογισμικό, αγοράστε εγγραφή και λάβετε καλύτερες γνήσιες υπηρεσίες. Εάν υπάρχει οποιαδήποτε παραβίαση, επικοινωνήστε μαζί μας μέσω email.

Mail To:help@itsvse.com