Sebbene LINQ e il suo motore di traduzione in SQL siano molto potenti, a volte capita di dover scrivere direttamente codice SQL per motivi prestazionali o perchè è più semplice scrivere la query in SQL che in LINQ. In quesi casi torna in aiuto il metodo FromSql del DbSet. Questo metodo accetta in input una query SQL che viene eseguita sul server e che viene mappata direttamente sul tipo del DbSet.
var people = context.People .FromSql("SELECT * FROM dbo.Person") .ToList();
Questa query estrae tutte le persone e le mappa verso il tipo Person che è il tipo del DbSet People.
Questo metodo accetta anche parametri con la stessa sintassi dello String.Format.
var people = context.People .FromSql("SELECT * FROM dbo.Person where id = {0}", 10) .ToList();
Sebbene la sintassi possa ingannare, in realtà Entity Framework Core non usa lo String.Format, bensì converte il tutto in un normale parametro così da evitare qualunque problema di SqlInjection.
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Evitare la command injection in un workflow di GitHub
Applicare il versioning ai nostri endpoint ASP.NET Core Minimal API
Gestire undefined e partial nelle reactive forms di Angular
Effettuare chiamate con versioning da Blazor ad ASP.NET Core
Reactive form tipizzati con FormBuilder in Angular
Utilizzare le collection expression in C#
Configurare dependabot per aggiornare le dipendenze di terze parti con GitHub Actions
Eseguire un metodo asincrono dopo il set di una proprietà in Blazor 8
Eseguire query verso tipi non mappati in Entity Framework Core
Short-circuiting della Pipeline in ASP.NET Core
Elencare le container images installate in un cluster di Kubernetes
Autenticarsi in modo sicuro su Azure tramite GitHub Actions