2010-11-25 7 views
38

Ich habe folgendes AutoMapper Defintion:Automapper - Zeichnet es Listen von Objekten?

Mapper.CreateMap<IB.BusinessComponents.Data.LocationMaster, IB.Entites.Master.Location>(); 
Mapper.CreateMap<IB.BusinessComponents.Data.LocationMaster, IB.Entites.Master.Location>() 
    .ForMember(destination => destination.Id, source => source.MapFrom(item => item.LocationMasterID)) 
    .ForMember(destination => destination.ChildLocationList, source => source.Ignore()); 

Das funktioniert gut, wenn ich ein einzelnes Objekt abzubilden. Aber ich kann scheinbar keine Listen von Objekten weitergeben. Brauche ich eine andere Definition, wenn ich eine Liste übergebe, oder ist das nicht möglich?

+0

Warum Sie die gleiche Zuordnung haben Sie zweimal ? Sie sollten es nur einmal definieren (vermutlich die zweite) – BeRecursive

+5

@BeRecursive - Wahrscheinlich, weil ich insgesamt 2 Stunden Erfahrung mit diesem Tool habe. –

+0

Nun, ich sollte mit Listen aus der Box arbeiten, solange Sie das Mapping korrekt definieren. Meinst du Listen des obigen Typs? Sie müssen keine Zuordnungen für Listen expliziter Objekte definieren, sondern nur die Zuordnungen für den Objekttyp definieren, den Sie zuordnen möchten, und die Listen sollten "nur funktionieren". – BeRecursive

Antwort

111

In Ihrem AutoMapper Definition:

CreateMap<MyStuffDTO, MyStuffViewModel>() 
     .ForMember(dto => dto.MyDate, opt => opt.MapFrom(src => src.LastDate)) 
     .ForMember(dto => dto.MyTime, opt => opt.MapFrom(src => src.LastTime)) 
     .ForMember(dto => dto.Category, opt => opt.MapFrom(src => src.Category)); 

In Code:

Für Single:

var result = Mapper.Map<MyStuffDTO, MyStuffViewModel>(obj); 

Listen:

var list = Mapper.Map<IList<MyStuffDTO>, IList<MyStuffViewModel>>(obj); 
+0

Perfekt gearbeitet - danke! –

+2

+10 wenn könnte, arbeitete wie ein Charme. – IamStalker

+0

[AutoMap (typeof (Liste ), typeof (Liste ))] kann ich es so in MVC ??? – dnxit