2012-06-11 25 views
5

AccountEditViewModel (bir kullanıcı düzenleme için kullanılan Model) ile benim User (Veritabanındaki bir Kullanıcıyı temsil eden Veri Modeli) arasında bir Otomatik Eşlem eşlemesi oluşturuyorum. Parola alanı doldurulursa, bu şifreyi şifrelemek ve eski şifreyi saklamak istediğimde saklamak istiyorum. Aşağıdaki kodu denedim ancak yanlış, model.Ignore() bir dize değeri döndürmez. Bunu yapmanın en iyi yolu nedir? Bunu ForMember() yöntemini kullanarak yapabilir miyim veya özel bir çözümleyiciye ihtiyacım var mı?C# Otomatik Eşleyici Null Olduğunda Yoksay Özelliği Ne zaman

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

cevap

8

bu deneyin:

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

        }); 
+1

Bir ForMember eklemeniz gerekir (modelini => model.Password, model => model.Ignore()) önce AfterMap() mapper artık diyoruz Eşleştirmeyi işleme –

+0

Otomatik yanıtlayıcının LinQ ifadelerini kullandığınızda, bu çalışmaz. – AgentFire

İlgili konular