2012-11-02 23 views
12

Sto usando automapper e vorrei sapere se è possibile ignorare una mappatura di un campo quando è nullo.Automapper - Ignora mappatura con condizione

Questo è il mio codice:

.ForMember(dest => dest.BusinessGroup_Id, 
      opt => opt.MapFrom(src => (int)src.BusinessGroup)) 
  • src.BusinessGroup type = "enum"
  • dest.BusinessGroup_Id = int

L'obiettivo è di ingore che Mapping se src.BusinessGroup = null.

risposta

25

Penso NullSubstitute opzione farà il trucco

.ForMember(d => d.BusinessGroup_Id, o => o.MapFrom(s => (int?)s.BusinessGroup)); 
.ForMember(d => d.BusinessGroup_Id, o => o.NullSubstitute(0)); 

BTW, scrivi tu condizioni in azione mappatura:

.ForMember(d => d.BusinessGroup_Id, 
      o => o.MapFrom(s => s.BusinessGroup == null ? 0 : (int)s.BusinessGroup)); 

UPDATE se non è possibile assegnare un valore predefinito per la vostra proprietà, puoi semplicemente ignorarlo e mappare solo non null:

.ForMember(d => d.BusinessGroup_Id, o => o.Ignore()) 
.AfterMap((s, d) => 
    { 
     if (s.BusinessGroup != null) 
      d.BusinessGroup_Id = (int)s.BusinessGroup; 
    }); 
+0

Ciao lazyberezovsky, grazie per la tua rapida risposta! Non riesco a impostare 0 su BusinessGroup_Id perché questo è un foreingKey su DB – user1520494

+2

Ty !! il tuo ultimo aggiornamento funziona perfettamente per me! :) – user1520494

Problemi correlati