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
Utilizzare gRPC su App Service di Azure
Utilizzare Azure AI Studio per testare i modelli AI
Popolare una classe a partire dal testo, con Semantic Kernel e ASP.NET Core Web API
Recuperare App Service cancellati su Azure
Referenziare un @layer più alto in CSS
Creare una libreria CSS universale: Nav menu
Code scanning e advanced security con Azure DevOps
Triggerare una pipeline su un altro repository di Azure DevOps
Ottimizzare le pull con Artifact Cache di Azure Container Registry
Testare l'invio dei messaggi con Event Hubs Data Explorer
Creare un'applicazione React e configurare Tailwind CSS
Creazione di plugin per Tailwind CSS: espandere le Funzionalità del Framework