2012-06-11 10 views
5

Tworzę mapowanie Automappera pomiędzy moim AccountEditViewModel (Model widoku używany do edycji użytkownika) i moim User (Model danych reprezentujący użytkownika w bazie danych). Jeśli pole hasła jest wypełnione, chcę zaszyfrować to hasło i zapisać je, ale jeśli jest puste, chcę zachować stare hasło. Próbowałem kodu poniżej jednak jest nieprawidłowy, model.Ignore() nie zwraca wartość ciągu. Jaki jest najlepszy sposób na zrobienie tego. Czy mogę to zrobić za pomocą metody ForMember() lub czy potrzebuję niestandardowego przelicznika?C# Automapper Ignoruj ​​właściwość po Null

Mapper.CreateMap<AccountEditViewModel, User>() 
       .ForMember(model => model.Password, model => model.MapFrom(user => user.Password != null ? EncryptPassword(user.Password) : model.Ignore())); 

Odpowiedz

8

Spróbuj tego:

Mapper.CreateMap<AccountEditViewModel, User>() 
.ForMember(model => model.Password, model => model.Ignore()) 
.AfterMap((src, dst) => 
        { 
         if (src.Password != null) 
          dst.Password= EncryptPassword(src.Password); 

        }); 
+1

Trzeba dodać ForMember (model => model.Password, model => model.Ignore()) przed AfterMap() nazywamy odwzorowujący nie jest już obsługa mapowania –

+0

To nie działa, gdy używasz wyrażeń LinQ automappera. – AgentFire

Powiązane problemy