Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

381
Vistas
Ignorar el mapeo de una propiedad con Automapper

Estoy usando Automapper y tengo el siguiente escenario: Class OrderModel tiene una propiedad llamada 'ProductName' que no está en la base de datos. Entonces, cuando trato de hacer el mapeo con:

 Mapper.CreateMap<OrderModel, Orders>();

Genera una excepción:

"Las siguientes 1 propiedades en Project.ViewModels.OrderModel no están asignadas: 'ProductName'

He leído en AutoMapper's Wiki for Projections el caso contrario (el atributo adicional está en el destino, no en la fuente, que en realidad es mi caso)

¿Cómo puedo evitar que automapper haga el mapeo de esta propiedad?

over 4 years ago · Santiago Trujillo
3 Respuestas
Responde la pregunta

0

De Jimmy Bogard: CreateMap<Foo, Bar>().ForMember(x => x.Blarg, opt => opt.Ignore());

Está en uno de los comentarios de su blog .

ACTUALIZAR ( del comentario de Jamie del 4 de enero de 2019 a las 11:11 :)

Ignorar se reemplazó con DoNotValidate en ForSourceMember: https://github.com/AutoMapper/AutoMapper/blob/master/docs/8.0-Upgrade-Guide.md

over 4 years ago · Santiago Trujillo Denunciar

0

Soy quizás un poco perfeccionista; Realmente no me gusta la ForMember(..., x => x.Ignore()) . Es una pequeña cosa, pero me importa. Escribí este método de extensión para hacerlo un poco más agradable:

 public static IMappingExpression<TSource, TDestination> Ignore<TSource, TDestination>( this IMappingExpression<TSource, TDestination> map, Expression<Func<TDestination, object>> selector) { map.ForMember(selector, config => config.Ignore()); return map; }

Se puede usar así:

 Mapper.CreateMap<JsonRecord, DatabaseRecord>() .Ignore(record => record.Field) .Ignore(record => record.AnotherField) .Ignore(record => record.Etc);

También podría reescribirlo para que funcione con params , pero no me gusta el aspecto de un método con un montón de lambdas.

over 4 years ago · Santiago Trujillo Denunciar

0

Puedes hacerlo:

 conf.CreateMap<SourceType, DestinationType>() .ForSourceMember(x => x.SourceProperty, y => y.Ignore());

O, en la última versión de Automapper, simplemente quiere decirle a Automapper que no valide el campo

 conf.CreateMap<SourceType, DestinationType>() .ForSourceMember(x => x.SourceProperty, y => y.DoNotValidate());
over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda