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 16:31