Una delle soluzioni architetturali che ho imparato ad apprezzare ed utilizzare nel corso degli anni è quella che prevede:
– uno strato Model, contenente una o più entità POCO referenziate tra loro;
– uno strato Repository per l’accesso ai dati;
– uno strato Service;
– uno strato Presentation, che contiene le nostre pagine html/aspx (o le view se sviluppate in asp.net mvc).
Una pratica che vi consiglio caldamente di seguire è di non utilizzare gli oggetti POCO per la loro rappresentazione grafica, ma di affidarvi a dei DTO di appoggio.
In tal senso, oggi ho scoperto un utilissimo metodo fornito da AutoMapper, in sede di creazione della Map tra un oggetto POCO ed un DTO.
1 2 | cfg.CreateMap<User, ViewModel.User.dtoUser>() .ForMember(dest => dest.Property, opt => opt.NullSubstitute("N/A")) |
L’utilizzo del metodo NullSubstitute vi consente di associare automaticamente un valore string di default nel caso in cui la proprietà risulti essere NULL. (nel mio caso voglio visualizzare N/A nel caso in cui Property sia NULL).