Mapear Objectos com AutoMapper
AutoMapper é uma biblioteca de mapeamento entre objectos e pode ser usada para mapear mesmo objectos de tipos diferentes.
Exemplo de tipos para mapeamento
Tipo origempublic partial class GamaO
{
public int Id { get; set; } // id (Primary key)
public string Ab { get; set; } // ab (length: 2)
public int IdMarca { get; set; } // idMarca
public string Nome { get; set; } // Nome (length: 45)
public string NomeTipo { get; set; } // NomeTipo (length: 20)
public int? IdEixo { get; set; } // IdEixo
}
Tipo destino
public class GamaD
{
public string Nome { get; set; }
public string Abreviatura { get; set; }
public string Tipo { get; set; }
public virtual Marca Marca { get; set; }
}
public class Marca
{
public string IdERP { get; set; }
public string Nome { get; set; }
}
Instalação do AutoMapper no VS
PM> Install-Package AutoMapper
Configuração do AutoMapper
public MapperConfiguration Config { get; set; }
Config = new MapperConfiguration(cfg =>
{
// Configure AutoMapper
cfg.CreateMap<GamaO, GamaD>()
.ForMember(dest => dest.Id, opt => opt.MapFrom(src => src.GuidCrm))
.ForMember(dest => dest.IdERP, opt => opt.MapFrom(src => src.Id))
.ForMember(dest => dest.Nome, opt => opt.MapFrom(src => src.Nome))
.ForMember(dest => dest.Abreviatura, opt => opt.MapFrom(src => src.Ab))
.ForMember(dest => dest.Tipo, opt => opt.MapFrom(src => src.NomeTipo))
.ForPath(dest => dest.Marca.IdERP, opt => opt.MapFrom(src => src.IdMarca))
.ForPath(dest => dest.Marca.Nome, opt => opt.Ignore())
.ReverseMap();
});
Mapear com AutoMapper
// Perform mapping
var mapper = Config.CreateMapper();
GamaD entityD = mapper.Map(entityGamaO);
Reverter mapeamento com AutoMapper
// Perform reverse mapping
GamaD entityD = new GamaD();
mapper.Map(entityGamaO, entityGamaD);
Referências: ASP.Net MVC – AutoMapper e View Models, Para que serve o AutoMapper?
fonte: InfoWorld