net mvc imapper framework example ejemplo custom c# asp.net automapper

c# - mvc - automapper nuget



AutoMapper Migrando desde API estática (2)

https://github.com/AutoMapper/AutoMapper/wiki/Migrating-from-static-API

este cambio rompe mi sistema.

Antes de actualizar, uso:

===> Startup.cs

public class Startup { public Startup(IHostingEnvironment env) { ... MyAutoMapperConfiguration.Configure(); } }

===> MyAutoMapperConfiguration.cs

public class MyAutoMapperConfiguration { public static void Configure() { Mapper.Initialize(a => { a.AddProfile<AbcMappingProfile>(); a.AddProfile<XyzMappingProfile>(); a.AddProfile<QweMappingProfile>(); }); } }

===> AbcMappingProfile.cs

public class AbcMappingProfile : Profile { protected override void Configure() { Mapper.CreateMap<AbcEditViewModel, Abc>(); Mapper.CreateMap<Abc, AbcEditViewModel>(); ... } }

ERROR:

''Mapper.CreateMap ()'' está obsoleto: ''La API estática se eliminará en la versión 5.0. Utilice una instancia de MapperConfiguration y almacénela de forma estática según sea necesario. Use CreateMapper para crear una instancia de mapeador.

Puedo usar Mapper.Map. Ahora como puedo usarlo


En lugar de Automapper Profile use la extensión IMapperConfigurationExpression:

Configuración de mapeo:

public static class AutoMapperConfig { public static IMapperConfigurationExpression AddAdminMapping( this IMapperConfigurationExpression configurationExpression) { configurationExpression.CreateMap<Job, JobRow>() .ForMember(x => x.StartedOnDateTime, o => o.PreCondition(p => p.StartedOnDateTimeUtc.HasValue)) .ForMember(x => x.StartedOnDateTime, o => o.MapFrom(p => p.StartedOnDateTimeUtc.Value.DateTime.ToLocalTime())) .ForMember(x => x.FinishedOnDateTime, o => o.PreCondition(p => p.FinishedOnDateTimeUtc.HasValue)) .ForMember(x => x.FinishedOnDateTime, o => o.MapFrom(p => p.FinishedOnDateTimeUtc.Value.DateTime.ToLocalTime())); return configurationExpression; } }

Integración (Startup.cs etc.):

var mappingConfig = new AutoMapper.MapperConfiguration(cfg => { cfg.AddAdminMapping(); }); services.AddSingleton(x => mappingConfig.CreateMapper());


En lugar de:

Mapper.CreateMap<AbcEditViewModel, Abc>();

La nueva sintaxis es:

var config = new MapperConfiguration(cfg => { cfg.CreateMap<AbcEditViewModel, Abc>(); });

Entonces:

IMapper mapper = config.CreateMapper(); var source = new AbcEditViewModel(); var dest = mapper.Map<AbcEditViewModel, Abct>(source);

( Fuente con más ejemplos )