Κατά την ανάπτυξη, όταν χρησιμοποιούμε το πλαίσιο πυρήνα ef, όταν χρησιμοποιούμε εκφράσεις linq ή λάμδα, δεν μπορούμε να προβάλουμε απευθείας τις δηλώσεις sql, κάτι που δεν είναι βολικό για εμάς να αντιμετωπίσουμε προβλήματα ή να βελτιστοποιήσουμε την απόδοση.
Αυτό το άρθρο χρησιμοποιεί το EF Core 5 ως παράδειγμαγια να προβάλετε τις προτάσεις SQL που δημιουργούνται από το EF εξόδου.
Αρχικά, δημιουργήστε μια νέα εργοστασιακή μεταβλητή consolelogger στο αρχείο εκκίνησης με τη μεταβλητή "ConsoleLoggerFactory" και η δήλωση sql που δημιουργήθηκε θα εξαχθεί στην κονσόλα, ο κώδικας έχει ως εξής:
Προσθέστε την έξοδο του αρχείου καταγραφής στη μέθοδο ConfigureServices ρυθμίζοντας τον κώδικα DbContext ως εξής:
Ξεκινήστε το έργο και δείτε την έξοδο της κονσόλας ως εξής:
info: Microsoft.EntityFrameworkCore.Database.Command[20101] Εκτελεσμένο DbCommand (1ms) [Παράμετροι=[], CommandType='Κείμενο', CommandTimeout='30'] ΕΠΙΛΕΞΤΕ [ a ]. [Id], [a]. [ Απενεργοποιημένο ], [ a]. [Σύνδεσμος], [α]. [Όνομα], [α]. [PinYin], [ένα]. [Θέση], [α]. [_CreateTime], [α]. [_CreateTimeStamp], [α]. [_UpdateTime], [α]. [_UpdateTimeStamp] ΑΠΟ [Περιοχή] AS [a]
info: Microsoft.EntityFrameworkCore.Database.Command[20101] Εκτελεσμένη εντολή dbCommand (19ms) [parameters=[p0='?' (Μέγεθος = 4000)], CommandType='Κείμενο', CommandTimeout='30'] ΕΠΙΛΟΓΗ * ΑΠΟ Περιοχή ΟΠΟΥ pinYin = @p0
info: Microsoft.EntityFrameworkCore.Database.Command[20101] Εκτελεσμένο DbCommand (1ms) [Παράμετροι=[], CommandType='Κείμενο', CommandTimeout='30'] ΕΠΙΛΟΓΗ * ΑΠΟ Περιοχή
Εάν η πρόταση SQL με τη συνθήκη where μπορεί να δει μόνο τις παραμετροποιημένες μεταβλητές και όχι τις συγκεκριμένες τιμές που έχουν περάσει, προστίθεται η ακόλουθη διαμόρφωση:
Ενεργοποιήστε τη συμπερίληψη δεδομένων εφαρμογής σε μηνύματα εξαίρεσης, αρχεία καταγραφής και άλλα.
Αυτό μπορεί να περιλαμβάνει τιμές που έχουν εκχωρηθεί σε ιδιότητες παρουσίας οντότητας,
τιμές παραμέτρων των εντολών που αποστέλλονται στη βάση δεδομένων και άλλα τέτοια δεδομένα.
Αυτή η επισήμανση θα πρέπει να ενεργοποιείται μόνο εάν υπάρχουν μέτρα ασφαλείας
Με βάση την ευαισθησία αυτών των δεδομένων.
Σημειώστε εάν η εφαρμογή περνάει από
Καλέστε το Microsoft.EntityFrameworkCore.DbContextOptions generator.UseInternalServiceProvider(system. IServiceProvider),
Αυτή η επιλογή πρέπει στη συνέχεια να ρυθμιστεί με τον ίδιο τρόπο για όλη τη χρήση αυτού του παρόχου υπηρεσιών.
Εξετάστε το ενδεχόμενο να μην καλέσετε το Microsoft.EntityFrameworkCore.DbContextOptionsGenerator.UseInternalServiceProvider(system. IServiceProvider)
Ως εκ τούτου, το EF θα διαχειρίζεται τον πάροχο υπηρεσιών και θα μπορεί να δημιουργεί νέες περιπτώσεις ανάλογα με τις ανάγκες
Η πλήρης ρύθμιση έχει ως εξής:
Οι αποδόσεις είναι οι εξής:
Φυσικά, οι παραπάνω ρυθμίσεις μπορούν επίσης να διαμορφωθούν παρακάμπτοντας τη μέθοδο OnConfiguring του DbContext (δεν συνιστάται):
(Τέλος)
|