À l'aide de automapper pour mapper des objets imbriqués
J'ai un de ses Clients EF POCO classe qui contient une référence à l'Adresse de la table.
Le code suivant semble fonctionner, mais je ne suis pas sûr que c'est la façon la plus propre de le faire. Est-il une meilleure façon de carte ce n'utiliser qu'une seule Carte d'appel?
[HttpGet]
public ActionResult Details(string ID)
{
BusinessLogic.Customers blCustomers = new BusinessLogic.Customers("CSU");
DataModels.Customer customer = blCustomers.GetCustomer(ID);
CustomerDetailsViewModel model = new CustomerDetailsViewModel();
Mapper.CreateMap<DataModels.Customer, CustomerDetailsViewModel>();
Mapper.CreateMap<DataModels.Address, CustomerDetailsViewModel>();
Mapper.Map(customer, model);
Mapper.Map(customer.Address, model);
return View(model);
}
OriginalL'auteur Scottie | 2012-02-17
Vous devez vous connecter pour publier un commentaire.
Cela dépend de ce que votre
CustomerDetailsViewModel
ressemble. Par exemple, si votreAddress
de classe ressemble à quelque chose comme ceci:et
CustomerDetailsViewModel
contient les propriétés suivantes de la présente convention:(Source: L'aplatissement)
Puis, si
CustomerDetailsViewModel
possède des propriétés:Juste une cartographie de
Customer
àCustomerDetailsViewModel
fonctionne. Pour les membres qui ne correspondent pas à cette convention, vous pouvez utiliserForMember
.Vous pouvez toujours utiliser
ForMember
pour chaque adresse de la propriété:Personnellement, je ne serais pas trop inquiet au sujet de l'appel de
.Map
deux fois. Au moins de cette façon, il est très clair que les deuxAddress
etCustomer
propriétés sont mappées.OriginalL'auteur Andrew Whitaker