Utilizzare una table-valued function con Entity Framework 5

di Stefano Mostarda, in LINQ, Entity Framework,

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

Visualizza/aggiungi commenti

| Condividi su: Twitter, Facebook, LinkedIn

Per inserire un commento, devi avere un account.

Fai il login e torna a questa pagina, oppure registrati alla nostra community.

Approfondimenti

I più letti di oggi