DTO e LINQ

Claudio mi ha anticipato di qualche ora.
Nel suo post spiega che LINQ non è solo un "linguaggio" (o dovremmo chiamarla sintassi?) per interrogare fonti dati è anche un ottimo strumento per scrivere codice più sintetico e più "parlante".

Io vorrei riprendere (questa è davvero l'ultima :-)) il discorso sui DTO.
Con LINQ molti dei discorsi fatti decadono, infatti non è più necessario scrivere classi ad-hoc per creare oggetti DTO (o oggetti Vista), LINQ permette di creare oggetti on-the-fly con la forma che ci serve per quel preciso contesto.

Riprendiamo il solito esempio Customer-Address in cui vogliamo mostrare a video un elenco di Customer con indirizzo completo, con LINQ non è necessario creare l'oggetto CustomerDTO ma è sufficiente scrivere queste poche righe di codice nella classe del service layer:

public IEnumerable GetCustomers()
{
    IList<Customer> customers = LoadCustomerFromDB();

    IEnumerable list = from c in customers
                       select new { 
Name=c.Name,
FullAddress=(c.Address.Street + " " + c.Address.City) }; return list; }

Questo metodo sfrutta gli anonymous type per creare un'oggetto con 2 proprietà (Name e FullAddress) senza che sia necessario creare appositamente il tipo.

Print | posted on lunedì 12 novembre 2007 14.31

Comments on this post

# re: DTO e LINQ

Requesting Gravatar...
Mamma mia questa golosità mi fa voglia di rifare da 0 il DAL di un progetto che sto quasi per mandare in TEST ... vabbè sarà per il prossimo!! ;-)
Left by raffaeu on nov 12, 2007 10.55

# re: DTO e LINQ

Requesting Gravatar...
Bello, vero! Però provate ad immaginare un prodotto nel quale un cliente può personalizzare le viste (Name lo voglio vedere, FullAddress no), od ancora, il cliente C1 vuole la traduzione con Nome/Indirizzo e C2 vuole RagioneSociale/IndirizzoCompleto, ecco che la volatilità è un'arma pericolosa, molto pericolosa.
Left by Tommaso Caldarola on nov 14, 2007 10.14

Your comment:

 (will show your gravatar)
 
Please add 5 and 1 and type the answer here: