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 QuickGrid di Blazor con Entity Framework
Generare velocemente pagine CRUD in Blazor con QuickGrid
Persistere la ChatHistory di Semantic Kernel in ASP.NET Core Web API per GPT
Utilizzare EF.Constant per evitare la parametrizzazione di query SQL
Change tracking e composition in Entity Framework
Ottimizzare il mapping di liste di tipi semplici con Entity Framework Core
Supporto ai tipi DateOnly e TimeOnly in Entity Framework Core
Usare le navigation property in QuickGrid di Blazor
Filtrare i dati di una QuickGrid in Blazor con una drop down list
Le novità di Entity Framework 8
Utilizzare il metodo CountBy di LINQ per semplificare raggruppamenti e i conteggi
I più letti di oggi
- Effettuare il log delle chiamate a function di GPT in ASP.NET Web API
- ecco tutte le novità pubblicate sui nostri siti questa settimana: https://aspit.co/wkly buon week-end!
- Utilizzare il metodo CountBy di LINQ per semplificare raggruppamenti e i conteggi
- Creare una libreria CSS universale: Cards
- Eseguire script pre e post esecuzione di un workflow di GitHub