net mvc imapper example ejemplo corner c# model-view-controller automapper

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.