În dezvoltare, când folosești framework ef core, când folosești expresii linq sau lambda, nu putem vizualiza direct instrucțiunile sql, ceea ce este incomod pentru noi pentru a depana sau optimiza performanța.
Acest articol folosește EF Core 5 ca exemplupentru a vizualiza instrucțiunile SQL generate de EF-ul de ieșire.
Mai întâi, creează o nouă variabilă de fabrică consolelogger în fișierul de pornire cu variabila "ConsoleLoggerFactory", iar instrucțiunea sql generată va fi trimisă către consolă, codul fiind următorul:
Adaugă ieșirea logaritară la metoda ConfigureServices prin configurarea codului DbContext după cum urmează:
Începe proiectul și vezi rezultatul consolei după cum urmează:
info: Microsoft.EntityFrameworkCore.Database.Command[20101] Executat DbCommand (1ms) [Parametri=[], CommandType='Text', CommandTimeout='30'] SELECT [a]. [Id], [a]. [Invalid], [a]. [Link], [a]. [Nume], [a]. [PinYin], [a]. [Poziție], [a]. [_CreateTime], [a]. [_CreateTimeStamp], [a]. [_UpdateTime], [a]. [_UpdateTimeStamp] DE [Zonă] CA [a]
info: Microsoft.EntityFrameworkCore.Database.Command[20101] Executat DbCommand (19ms) [Parametri=[p0='?' (Dimensiune = 4000)], ComandăTip='Text', TimpComandă='30'] SELECT * DIN Zona UNDE pinYin = @p0
info: Microsoft.EntityFrameworkCore.Database.Command[20101] Executat DbCommand (1ms) [Parametri=[], CommandType='Text', CommandTimeout='30'] SELECT * DIN Zonă
Dacă instrucțiunea SQL cu condiția where poate vizualiza doar variabilele parametrizate, nu valorile specifice trecute, se adaugă următoarea configurație:
Permiteți includerea datelor aplicației în mesajele excepționale, jurnale și altele.
Aceasta poate include valori atribuite proprietăților instanței entității,
valori ale parametrilor comenzilor trimise către baza de date și alte date similare.
Acest steag ar trebui activat doar dacă există măsuri de siguranță în vigoare
Pe baza sensibilității acestor date.
Notează dacă aplicația este în curs de proces
Sună generatorul Microsoft.EntityFrameworkCore.DbContextOptions.UseInternalServiceProvider(system. IServiceProvider),
Această opțiune trebuie apoi configurată în același mod pentru orice utilizare a acelui furnizor de servicii.
Ia în considerare să nu suni Microsoft.EntityFrameworkCore.DbContextOptionsGenerator.UseInternalServiceProvider(system). IServiceProvider)
Prin urmare, EF va gestiona furnizorul de servicii și poate crea instanțe noi după necesitate
Configurația completă este următoarea:
Randările sunt următoarele:
Desigur, setările de mai sus pot fi configurate și prin suprascrierea metodei OnConfiguring a DbContext (nu recomandată):
(Sfârșit)
|