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
Eseguire query manipolando le liste contenute in un oggetto mappato verso una colonna JSON
Recuperare un elemento inserito nella cache del browser tramite API JavaScript
Registrare servizi multipli tramite chiavi in ASP.NET Core 8
Determinare lo stato di un pod in Kubernetes
Evitare (o ridurre) il repo-jacking sulle GitHub Actions
Usare un KeyedService di default in ASP.NET Core 8
Specificare il versioning nel path degli URL in ASP.NET Web API
Sviluppare un'interfaccia utente in React con Tailwind CSS e Preline UI
.NET Conference Italia 2023
Migrare una service connection a workload identity federation in Azure DevOps
Installare le Web App site extension tramite una pipeline di Azure DevOps
Utilizzare Tailwind CSS all'interno di React: installazione
I più letti di oggi
- Miglioramenti nelle performance di Angular 16
- Ottimizzare le performance delle collection con le classi FrozenSet e FrozenDictionary
- HTML5 con CSS e JavaScript
- ecco tutte le novità pubblicate sui nostri siti questa settimana: https://aspit.co/wkly buon week-end!
- Ottimizzazione dei block template in Angular 17
- Disabilitare automaticamente un workflow di GitHub (parte 2)