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

Άποψη: 36284|Απάντηση: 0

[Πηγή] Χαρακτηριστικά σκίασης πλαισίου οντότητας σειράς EF Core (3) [Επανεκτύπωση]

[Αντιγραφή συνδέσμου]
Δημοσιεύτηκε στις 2021-2-7 14:15:08 | | | |
Το EF Core Series 2 ενσωματώνει το OnModelCreating, δημιουργεί ευρετήρια χρησιμοποιώντας αντανακλάσεις και πολλά άλλα
https://www.itsvse.com/thread-9392-1-1.html

Οι ιδιότητες σκιάς είναι ιδιότητες που δεν ορίζονται στην κλάση οντότητας .NET, αλλά ορίζονται για αυτόν τον τύπο οντότητας στο μοντέλο πυρήνα EF. Οι τιμές και οι καταστάσεις αυτών των χαρακτηριστικών διατηρούνται αποκλειστικά στον ανιχνευτή αλλαγών. Οι σκιασμένες ιδιότητες είναι χρήσιμες όταν τα δεδομένα σε μια βάση δεδομένων δεν πρέπει να εκτίθενται στον αντιστοιχισμένο τύπο οντότητας.
Ο πυρήνας του Entity Framework εισάγει έναν νέο τύπο χαρακτηριστικού που ονομάζεται χαρακτηριστικό "shadow", το οποίο δεν υπάρχει στο EF 6.x.

Το χαρακτηριστικό της σκιάς δεν υπάρχει. οντοτήτων .NET. Αντί για αυτό, μπορείτε να ρυθμίσετε τις παραμέτρους του για έναν συγκεκριμένο τύπο οντότητας στο μοντέλο δεδομένων οντότητας. Μπορεί να ρυθμιστεί στη μέθοδο OnModelCreating() της κλάσης περιβάλλοντος.

Το παρακάτω διάγραμμα απεικονίζει το χαρακτηριστικό σκιάς.



Όπως φαίνεται στην παραπάνω εικόνα, το χαρακτηριστικό σκιάς δεν ανήκει στην κλάση οντότητάς σας. Επομένως, δεν μπορείτε να αποκτήσετε πρόσβαση σε αυτό όταν αποκτάτε πρόσβαση σε άλλες ιδιότητες μιας οντότητας. Οι σκιασμένες ιδιότητες μπορούν να ρυθμιστούν μόνο για τύπους οντοτήτων κατά τη δημιουργία του μοντέλου δεδομένων οντότητας και θα αντιστοιχιστούν επίσης σε στήλες βάσης δεδομένων. Η τιμή και η κατάσταση της ιδιότητας σκιάς διατηρούνται μόνο στον ιχνηλάτη αλλαγών.

Ας κατανοήσουμε τις πρακτικές πτυχές των ιδιοτήτων της σκιάς. Ας υποθέσουμε ότι πρέπει να διατηρήσουμε τις ημερομηνίες δημιουργίας και ενημέρωσης κάθε εγγραφής στον πίνακα της βάσης δεδομένων. Μάθατε πώς μπορείτε να ορίσετε τις ημερομηνίες δημιουργίας και τροποποίησης για οντότητες στο EF Core, ορίζοντας τις ιδιότητες CreatedDate και UpdatedDate στην κλάση οντότητας. Εδώ θα δούμε πώς να πετύχουμε το ίδιο αποτέλεσμα χρησιμοποιώντας ιδιότητες σκιάς αντί να συμπεριλάβουμε ιδιότητες σκιάς στην κλάση οντοτήτων.

Εξετάστε τις ακόλουθες φοιτητικών οντοτήτων.

Η παραπάνω τάξη μαθητώνΤα χαρακτηριστικά CreatedDate και UpdatedDate δεν περιλαμβάνονταιγια τη διατήρηση του χρόνου δημιουργίας ή ενημέρωσης. Τις ρυθμίζουμε ως ιδιότητες σκιάς στην οντότητα Μαθητής.

Ορισμός ιδιοτήτων σκιάς

Μπορείτε να χρησιμοποιήσετε τη μέθοδο OnModelCreating() για να ορίσετε ιδιότητες σκιάς για τύπους οντοτήτων χρησιμοποιώντας το Fluent API.

Η παρακάτω ρύθμιση παραμέτρων ρυθμίζει δύο σκιασμένες ιδιότητες, CreatedDate και UpdatedDate, για την οντότητα Μαθητής.


Όπως μπορείτε να δείτε, η μέθοδος Property() χρησιμοποιείται για τη διαμόρφωση των ιδιοτήτων σκιάς. Καθορίστε το όνομα της ιδιότητας σκιάς ως συμβολοσειρά και τον τύπο ως γενική παράμετρο. Εάν το όνομα που καθορίζεται στη μέθοδο Property() ταιριάζει με το όνομα μιας υπάρχουσας ιδιότητας, το βασικό αρχείο Core θα διαμορφώσει αυτήν την υπάρχουσα ιδιότητα ως σκιώδη ιδιότητα αντί να εισαγάγει μια νέα σκιώδη ιδιότητα.

Ιδιότητες σκιάς στη βάση δεδομένων

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

Για να το κάνετε αυτό, προσθέστε μια μετεγκατάσταση βάσης δεδομένων στην κονσόλα Package Manager του Visual Studio χρησιμοποιώντας την ακόλουθη εντολή.


Ο πίνακας Student θα περιλαμβάνει πλέον δύο στήλες, CreatedDate και UpdatedDate στον SQL Server, όπως φαίνεται παρακάτω.



Έτσι ακόμα κι αν δεν συμπεριλάβουμε αυτές τις ιδιότητες στην κλάση Student και δεν τις διαμορφώσουμε ως σκιώδεις ιδιότητες, η βάση δεδομένων θα έχει τις αντίστοιχες στήλες.

Πρόσβαση στην ιδιότητα σκιάς

Μπορείτε να χρησιμοποιήσετε τη μέθοδο Property() για να λάβετε ή να ορίσετε την τιμή της ιδιότητας σκιάς στο EntityEntry. Ο ακόλουθος κώδικας έχει πρόσβαση στην τιμή της ιδιότητας σκιάς.

Ωστόσο, στο σενάριό μας, θέλουμε να ορίσουμε αυτόματα τις τιμές σε αυτές τις ιδιότητες σκιάς στη μέθοδο SaveChanges(), ώστε να μην χρειάζεται να τις ορίσουμε με μη αυτόματο τρόπο σε κάθε αντικείμενο οντότητας. Επομένως, παρακάμψτε τη μέθοδο SaveChanges() στην κλάση περιβάλλοντος όπως φαίνεται παρακάτω.

Αυτό θα ορίσει αυτόματα τιμές για τις ιδιότητες σκιάς CreatedDate και UpdatedDate.

Τώρα, εκτελέστε τον παρακάτω κώδικα και ελέγξτε τις εγγραφές στη βάση δεδομένων.


Ο παραπάνω κώδικας θα εισαγάγει τις ακόλουθες εγγραφές στο CreatedDate και στο UpdatedDate for Students.



Επομένως, ρυθμίζοντας τις παραμέτρους των ιδιοτήτων σκιάς, δεν χρειάζεται να τις συμπεριλάβουμε στην κλάση οντότητας.

Ρύθμιση παραμέτρων των ιδιοτήτων σκιάς σε όλες τις οντότητες

Αντί να ρυθμίζετε με μη αυτόματο τρόπο τις ιδιότητες σκιάς σε όλες τις οντότητες ταυτόχρονα, μπορείτε να τις ρυθμίσετε με μη αυτόματο τρόπο.

Για παράδειγμα, μπορούμε να ρυθμίσουμε όλες τις οντότητες CreatedDate και UpdatedDate την τελευταία φορά, όπως φαίνεται στην παρακάτω εικόνα.


Πότε να χρησιμοποιήσετε τη σκιώδη ιδιότητα;

Το χαρακτηριστικό shadow μπορεί να χρησιμοποιηθεί σε δύο περιπτώσεις:

Όταν δεν θέλετε να εκθέσετε στήλες βάσης δεδομένων σε αντιστοιχισμένες οντότητες, όπως το σενάριο που συζητήθηκε παραπάνω.
Όταν δεν θέλετε να εκθέσετε χαρακτηριστικά εξωτερικού κλειδιού, αλλά θέλετε να χρησιμοποιήσετε μόνο χαρακτηριστικά περιήγησης για τη διαχείριση σχέσεων. Η ιδιότητα εξωτερικού κλειδιού θα είναι μια ιδιότητα σκιάς και θα αντιστοιχιστεί στη στήλη της βάσης δεδομένων, αλλά δεν θα εκτεθεί ως ιδιότητα της οντότητας. (Στο EF Core, εάν δεν ορίσετε μια ιδιότητα ξένου κλειδιού σε μια κλάση οντότητας, θα δημιουργήσει αυτόματα μια ιδιότητα σκιάς για αυτό.) Δεν χρειάζεται να ρυθμίσετε με μη αυτόματο τρόπο τις ιδιότητες ξένου κλειδιού. )


Πόροι:

Η σύνδεση με υπερσύνδεσμο είναι ορατή.
Η σύνδεση με υπερσύνδεσμο είναι ορατή.




Προηγούμενος:Η MySQL εξάγει τα αποτελέσματα του ερωτήματος σε ένα αρχείο
Επόμενος:ASP.NET Οδηγός Core ViewComponent σχετικά με τη χρήση του ViewComponent
Αποκήρυξη:
Όλο το λογισμικό, το υλικό προγραμματισμού ή τα άρθρα που δημοσιεύονται από το Code Farmer Network προορίζονται μόνο για μαθησιακούς και ερευνητικούς σκοπούς. Το παραπάνω περιεχόμενο δεν θα χρησιμοποιηθεί για εμπορικούς ή παράνομους σκοπούς, άλλως οι χρήστες θα υποστούν όλες τις συνέπειες. Οι πληροφορίες σε αυτόν τον ιστότοπο προέρχονται από το Διαδίκτυο και οι διαφορές πνευματικών δικαιωμάτων δεν έχουν καμία σχέση με αυτόν τον ιστότοπο. Πρέπει να διαγράψετε εντελώς το παραπάνω περιεχόμενο από τον υπολογιστή σας εντός 24 ωρών από τη λήψη. Εάν σας αρέσει το πρόγραμμα, υποστηρίξτε γνήσιο λογισμικό, αγοράστε εγγραφή και λάβετε καλύτερες γνήσιες υπηρεσίες. Εάν υπάρχει οποιαδήποτε παραβίαση, επικοινωνήστε μαζί μας μέσω email.

Mail To:help@itsvse.com