2010-11-25 19 views
38

Aşağıdaki Automapper Definition vardır: Tek bir nesneyi map zamanAutomapper - Nesnelerin listesini eşler mi?

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()); 

Bu iyi çalışır. Ama nesne listelerinde gözükmüyorum. Listede geçerken farklı bir tanıma ihtiyacım var mı yoksa mümkün değil mi?

kodunda
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)); 

:

Tekli: Liste için

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

: En AutoMapper Definition olarak

+0

iki kez ? Sadece bir kez tanımlamanız gerekir (muhtemelen ikincisi) – BeRecursive

+5

@BeRecursive - Muhtemelen bu araçla toplamda 2 saatlik deneyimim olduğu için. –

+0

Haritalamayı doğru bir şekilde tanımladığınız sürece listeden liste ile çalışmalıyım. Yukarıdaki tipin listelerini mi kastediyorsunuz? Açık nesnelerin listeleri için eşlemeleri tanımlamanıza gerek yoktur, sadece eşlemek istediğiniz nesnenin türüne ilişkin eşlemeleri tanımlayın ve 'sadece çalışın' ifadeleri ' – BeRecursive

cevap

111

aynı eşleme Neden

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

Mükemmel bir şekilde çalışın - teşekkürler! –

+2

+10, eğer bir cazibe gibi çalıştı. – IamStalker

+0

[AutoMap (typeof (Liste ), typeof (List ))] bunu MVC'de bu şekilde kullanabilir miyim ??? – dnxit