Molto spesso capita che un metodo di un servizio non ritorni una entity del dominio, ma una sua proiezione ottimizzata contenente solo le proprietà necessarie.
Grazie alla potenza di LINQ to Entities, possiamo inizializzare direttamente il nosto oggetto nella query LINQ senza estrarre dal database campi inutilizzati. Supponiamo di avere una classe CustomerDTO che deve essere restituita dal servizio. Questa classe contiene il nome e il cognome dei un cliente.
[DataContract]
public class CustomerDTO
{
[DataMember]
public string FirstName {get; set; }
[DataMember]
public string LastName {get; set; }
}La classe di dominio è Customer e contiene molte più proprietà. Utilizzando il metodo Select, possiamo creare una proiezione dell'entity Customer e mettere i dati direttamente nella classe CustomerDTO.
var dto = ctx.Customers.Select(
c => new CustomerDTO { FirstName = c.FirstName, LastName = c.LastName });
return dto.ToList();Se andiamo ad esaminare il codice SQL generato dalla query, vedremo che solo i campi FirstName e LastName sono stati estratti.
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Utilizzare il metodo IntersectBy per eseguire l'intersection di due liste
Mappare una complex property di una entity su un campo JSON
Creare espressioni riutilizzabili nelle query LINQ per Entity Framework
Eseguire query in contemporanea con EF
Loggare le query più lente con Entity Framework
Usare la libreria PredicateBuilder per eseguire query tramite Entity Framework che usano or su più campi
I più letti di oggi
- Effettuare il multi-checkout in linea nelle pipeline di Azure DevOps
- Esaminare documenti XML con namespace utilizzando LINQ to XML
- Alleggerire le applicazioni WPF sfruttando gli oggetti Freezable
- Le DirectInk API nella Universal Windows Platform
- Sfruttare una CDN con i bundle di ASP.NET
- Effetto turnstile su tutte le pagine con il Windows Phone Toolkit
- Gli oggetti CallOut di Expression Blend 4.0


