J'ai essayé d'utiliser AutoMapper pour gagner du temps en passant de mes DTO à mes objets de domaine, mais j'ai du mal à configurer la carte pour qu'elle fonctionne, et je commence à me demander si AutoMapper n'est pas le mauvais outil pour ce travail.
Considérons cet exemple d'objets de domaine (une entité et une valeur) :
public class Person
{
public string Name { get; set; }
public StreetAddress Address { get; set; }
}
public class StreetAddress
{
public string Address { get; set; }
public string City { get; set; }
public string State { get; set; }
}
Mon DTO (d'un objet Linq à SQL) ressemble à peu près à ceci :
public class PersonDTO
{
public string Name { get; set; }
public string Address { get; set; }
public string City { get; set; }
public string State { get; set; }
}
J'aimerais pouvoir le faire dans mon référentiel :
return Mapper.Map<PersonDTO, Person>(result);
J'ai essayé de configurer l'AutoMapper de toutes les manières possibles, mais je continue à obtenir le message générique suivant Configuration de carte de type manquante ou mappage non pris en charge sans aucun détail pour me dire où j'échoue.
J'ai essayé un certain nombre de configurations différentes, mais en voici quelques-unes :
Mapper.CreateMap<PersonDTO, Person>()
.ForMember(dest => dest.Address, opt => opt.MapFrom(Mapper.Map<Person, Domain.StreetAddress>));
et
Mapper.CreateMap<Person, Domain.Person>()
.ForMember(dest => dest.Address.Address1, opt => opt.MapFrom(src => src.Address))
.ForMember(dest => dest.Address.City, opt => opt.MapFrom(src => src.City))
.ForMember(dest => dest.Address.State, opt => opt.MapFrom(src => src.State));
J'ai lu que aplatissant d'objets avec AutoMapper est facile, mais dégonflement ce n'est pas facile... ni même possible. Quelqu'un peut-il me dire si j'essaie de faire l'impossible et, dans le cas contraire, ce que je fais de mal ?
Notez que mes objets réels sont un peu plus compliqués, il est donc possible que j'omette des informations qui sont la clé de l'erreur... si ce que je fais semble correct, je peux fournir plus d'informations ou commencer à simplifier mes objets pour les tester.
0 votes
Hmmm, votre deuxième configuration a l'air bien (à part son nom manquant) et ne devrait-elle pas être <PersonDTO, Domain.Person> ? Il serait peut-être utile de vérifier que Domain.Person et PersonDTO sont des références correctes aux classes mentionnées ci-dessus.
0 votes
Liés : stackoverflow.com/questions/8159186/
1 votes
Pour l'instant, le lien de Ruben et la réponse acceptée (une seule réponse pour l'instant) de 81959186 renvoient à ce message. Je ne vois pas la valeur du commentaire du lien sur cette page. Ruben a posté un lien vers cette question à partir de l'autre page et celui-là a du sens.