mvc - imapper c#
ConfiguraciĆ³n global de Automapper 5.0 (2)
Estoy usando el siguiente código en AutoMapperConfig.cs
en la carpeta App_Start
. Inicialicé en Global.asax
como AutoMapperConfiguration.Configure()
Pero no puedo usar Mapper.Map<Hospital, MongoHospital>
en mi controlador. Lanza una excepción que no se define ninguna asignación. Estaba trabajando en versiones anteriores de Automapper que Mapper.CreateMap<>
métodos Mapper.CreateMap<>
. Estoy confundido sobre cómo usar la instancia de MapperConfiguration
.
public static class AutoMapperConfiguration
{
public static void Configure()
{
Mapper.Initialize(
cfg =>
{
cfg.AddProfile<HospitalProfile>();
}
);
Mapper.AssertConfigurationIsValid();
}
}
public class HospitalProfile : Profile
{
protected override void Configure()
{
var config = new MapperConfiguration(
cfg =>
{
cfg.CreateMap<Hospital, MongoHospital>()
.ForMember(dest => dest.Id, opt => opt.MapFrom(src => src.Id.ToString()));
});
config.CreateMapper();
}
}
Intentando acceder a este mapa como se muestra a continuación
Mapper.Map<IEnumerable<Hospital>, IEnumerable<MongoHospital>>(hospitalsOnDB);
¿De verdad necesitas usar un perfil en este escenario? Si no lo haces, puedes tratar de inicializar el Mapper de esta manera:
public static class AutoMapperConfiguration
{
public static void Configure()
{
Mapper.Initialize(
config =>
{
config.CreateMap<Hospital, MongoHospital>()
.ForMember(dest => dest.Id, opt => opt.MapFrom(src => src.Id.ToString()));
});
}
}
Sin embargo, si desea seguir registrando un perfil, puede hacer esto:
public static class AutoMapperConfiguration
{
public static void Configure()
{
Mapper.Initialize(
cfg =>
{
cfg.AddProfile<HospitalProfile>();
}
);
}
}
public class HospitalProfile : Profile
{
protected override void Configure()
{
CreateMap<Hospital, MongoHospital>()
.ForMember(dest => dest.Id, opt => opt.MapFrom(src => src.Id.ToString()));
}
}
Espero que esto ayude. Si está utilizando AutoMapper 5.0, recuerde que esto todavía está en beta-1 en este momento.
Puedes usar esto con AutoMapper 5.2.
Tu clase de perfil como abajo
public class MapperProfile: Profile
{
public MapperProfile()
{
CreateMap<Hospital, MongoHospital>().ReverseMap();
}
}
Luego en su Global.asax
protected void Application_Start()
{
//Rest of the code
Mapper.Initialize(c => c.AddProfiles(new string[] { "DLL NAME OF YOUR PROFILE CLASS" }));
}
Ahora cuando necesitas crear una instancia
AutoMapper.Mapper.Instance.Map<MongoHospital, Hospital>(source, new Hospital());
Espero que esto ayude.