Dois-je créer automapper createmap dans les deux sens?
Cela peut être une question stupide! (n00b à AutoMapper et le temps court!)
Je veux utiliser AutoMapper pour mapper des entités EF4 vers les classes ViewModel.
1) Si je l'appelle
CreateMap<ModelClass, ViewModelClass>()
ensuite, dois-je aussi faire appel
CreateMap<ViewModelClass, ModelClass>()
pour effectuer l'inverse?
2) si deux classes ont les mêmes noms de propriétés, est-ce que j'ai besoin d'une instruction CreateMap du tout, ou est-ce juste pour des mappages "spécifiques/personnalisés"?
3 réponses
dans AutoMapper vous avez un type Source et un type Destination. Vous ne pourrez donc faire la correspondance entre ce type de Source et le type de Destination que si vous avez un CreateMap correspondant. Donc, pour répondre à tes questions:
- Vous n'avez pas besoin définir la cartographie inverse. Vous devez le faire seulement si vous avez l'intention de la carte arrière.
- Oui, vous avez besoin d'appeler CreateMap indiquer que ces types sont cartographiables sinon une exception sera levée lorsque vous appelez
Map<TSource, TDest>
vous dire qu'il n'y a pas de correspondance entre le type source et le type destination.
Pour l'info des gens qui trébuchent sur cette question. Il semble maintenant être un moyen intégré pour réaliser une cartographie inverse en ajoutant un .ReverseMap()
appel à la fin de votre CreateMap()
chaîne de configuration.
j'ai utilisé une méthode d'extension faire la cartographie dans les deux sens
public static IMappingExpression<TDestination, TSource> BothWays<TSource, TDestination>
(this IMappingExpression<TSource, TDestination> mappingExpression)
{
return Mapper.CreateMap<TDestination, TSource>();
}
utilisation:
CreateMap<Source, Dest>().BothWays();