Una delle principali novità di Entity Framework 5 è la possibilità di sfruttare le table-valued function. Le table-valued function sono delle funzioni sul database che, a differenza delle stored procedure, possono essere la sorgente dati di una query. Questa differenza rende le table-valued function molto comode da utilizzare in quanto offrono vantaggi in termini di performance.
Facciamo un esempio. Nel database abbiamo i clienti con un campo che specifica se il cliente è attivo o meno. Quando recuperiamo i clienti vogliamo ottenere sempre e solo i clienti attivi. Se avessimo più query sui clienti, dovremmo sempre ricordarci di applicare la regola fissa del recuperare solo i clienti attivi. Con una stored procedure potremmo effettuare una query su tutti i clienti attivi e scaricarli in locale per poi eseguire i filtri, ma quando i clienti sono tanti le performance non sarebbero ottimali.
In questi casi possiamo usare una table-valued function che ci restituisce i clienti attivi e ci permette di eseguire ulteriori filtri direttamente sul server garantendo quindi ottime prestazioni.
Utilizzare le table-valued function in Entity Framework è banale in quanto dobbiamo importarle tramite il designer nello schema fisico e poi in quello logico. A questo punto, la table-valued function viene esposta come un metodo del contesto che possiamo invocare e sul risultato del quale possiamo applicare ulteriori filtri con LINQ. Il risultato è che Entity Framework genererà un codice SQL che interroga la table-valued function e applica gli ulteriori filtri.
var customers = from c in ctx.GetActiveCustomers() where c.city == "Rome" select c;
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Managed deployment strategy in Azure DevOps
Usare le navigation property in QuickGrid di Blazor
Utilizzare Azure AI Studio per testare i modelli AI
Selettore CSS :has() e i suoi casi d'uso avanzati
Eseguire query per recuperare il padre di un record che sfrutta il tipo HierarchyID in Entity Framework
Creare una libreria CSS universale: Nav menu
Recuperare automaticamente un utente e aggiungerlo ad un gruppo di Azure DevOps
Filtrare i dati di una QuickGrid in Blazor con una drop down list
Supporto ai tipi DateOnly e TimeOnly in Entity Framework Core
Utilizzare EF.Constant per evitare la parametrizzazione di query SQL
Gestione degli stili CSS con le regole @layer
Eseguire una ricerca avanzata per recuperare le issue di GitHub