2012-11-02 16 views
12

Używam automappera i chciałbym wiedzieć, czy można zignorować mapowanie pola, gdy jest to wartość null.Automapper - Ignoruj ​​mapowanie z warunkiem

To mój kod:

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

Celem jest to, że do ingore mapowania jeśli src.BusinessGroup = null.

Odpowiedz

25

myślę NullSubstitute opcja rade

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

BTW można napisać warunków w akcji mapowania:

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

UPDATE jeśli nie można przypisać jakąś wartość domyślną do nieruchomości, możesz go po prostu zignorować i odwzorować tylko wartości nie null:

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

Witaj lazyberezovsky, dziękuję za szybką reakcję! Nie mogę ustawić 0 na BusinessGroup_Id, ponieważ jest to foreingKey w DB – user1520494

+2

Ty !! twoja ostatnia aktualizacja działa idealnie dla mnie! :) – user1520494

Powiązane problemy