net mvc framework custom collection .net automapper

.net - mvc - automapper net core



Cómo usar AutoMapper.ForMember? (4)

¿Lo estás haciendo así?

Mapper.CreateMap<SourceType,DestinationType>().ForMember(What ever mapping in here)

Esta página tiene algunos buenos ejemplos

Estoy intentando configurar AutoMapper para convertir de Entity a DTO. Sé que se supone que .ForMember() usar .ForMember() después de Mapper.CreateMap<Entity, DTO>() para configurar asignaciones personalizadas, pero esto no parece ser un método disponible.

Edite para aclarar: no estoy buscando un enlace a la documentación, que he leído, o una explicación de la sintaxis básica. Estoy usando la sintaxis correcta como se describe en las respuestas y la documentación, por ejemplo:

Mapper.CreateMap<EFAddress, Address>() .ForMember(dest => dest.Code, opt => opt.MapFrom(src => src.Name));

Si tengo un nombre de tipo no válido dentro de CreateMap <> Puedo ver "ForMember" como un método válido, mousing muestra la firma del método como normalmente esperaría. Pero tan pronto como le doy dos tipos válidos, ForMember dice que no puede resolver el símbolo, como si el método no estuviera disponible.

¿Hay algún tipo de restricción en las clases genéricas que no estoy cumpliendo?

Gracias


Al final, creo que esto resultó ser una especie de incompatibilidad con ReSharper.

ReSharper parece haber causado que el código de Automapper se muestre incorrectamente, pero funciona bien (aunque se muestra en rojo con mensajes de error). La desinstalación de ReSharper solucionó este problema por completo.


Pruebe la siguiente sintaxis:

Mapper .CreateMap<Entity, EntityDto>() .ForMember( dest => dest.SomeDestinationProperty, opt => opt.MapFrom(src => src.SomeSourceProperty) );

o si las propiedades de origen y destino tienen los mismos nombres simplemente:

Mapper.CreateMap<Entity, EntityDto>();

Consulte las secciones relevantes de la documentation para obtener más detalles y otros escenarios de mapeo.


una implementación de muestra sería la siguiente:

Mapper.CreateMap<Game, GameViewModel>() .ForMember(m => m.GameType, opt => opt.MapFrom(src => src.Type))

Necesitamos asignar esta propiedad ya que los nombres de las propiedades de Game y GameViewModel son diferentes: si son del mismo tipo y del mismo tipo, no necesitará un ForMember

otro uso del ForMember es Ignorar asignaciones

Mapper.CreateMap<Game, GameViewModel>() .ForMember(dest => dest.Prize, opt => opt.Ignore());