2011-10-28 17 views
12

Ho 1 classe che ho bisogno di mappare in più classi, ad es.Mappa automapper in classe nidificata

Questa è la fonte che sto mappatura da (Model View):

public class UserBM 
{ 
    public int UserId { get; set; } 

    public string Address { get; set; } 
    public string Address2 { get; set; } 
    public string Address3 { get; set; } 
    public string State { get; set; } 

    public int CountryId { get; set; } 
    public string Country { get; set; } 
} 

Questo è come la classe di destinazione è (modello di dominio):

public abstract class User 
{ 
    public int UserId { get; set; } 

    public virtual Location Location { get; set; } 
    public virtual int? LocationId { get; set; } 
} 

public class Location 
{ 
    public int LocationId { get; set; } 

    public string Address { get; set; } 
    public string Address2 { get; set; } 
    public string Address3 { get; set; } 
    public string State { get; set; } 

    public virtual int CountryId { get; set; } 
    public virtual Country Country { get; set; } 

} 

Ecco come il mio automapper Crea mappa attualmente appare:

Mapper.CreateMap<UserBM, User>(); 

risposta

22

Definire due mappature, entrambe le mappature dalla stessa origine a destinazioni diverse. Nella mappatura User, mappare la proprietà Location manualmente utilizzando Mapper.Map<UserBM, Location>(...)

Mapper.CreateMap<UserBM, Location>(); 
Mapper.CreateMap<UserBM, User>() 
    .ForMember(dest => dest.Location, opt => 
     opt.MapFrom(src => Mapper.Map<UserBM, Location>(src)); 
+0

come si può fare il contrario? – xrklvs

+4

C'è un thread simile su [SO] (http://stackoverflow.com/questions/5984640/automapper-class-and-nested-class-map-to-one-class), dove mi piace il bit finale della mappatura : invece di 'opt.MapFrom (src => Mapper.Map (src)', usa un più semplice 'opt => opt.MapFrom (src => src)' – superjos

Problemi correlati