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"?

36
demandé sur BlueChippy 2011-05-31 12:44:11

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:

  1. 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.
  2. 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.
12
répondu Darin Dimitrov 2011-05-31 08:47:46

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.

99
répondu Ivan Zlatev 2012-07-26 16:27:49

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();
8
répondu Brian 2013-07-25 19:36:52