2010-03-15 14 views
27

की स्थिति पर नजरअंदाज करें क्या किसी स्रोत संपत्ति के मूल्य के आधार पर किसी सदस्य को मानचित्रण करना अनदेखा करना संभव है?ऑटोमैपर:

उदाहरण के लिए यदि हमने:

public class Car 
{ 
public int Id { get; set; } 
public string Code { get; set; } 
} 

public class CarViewModel 
{ 
public int Id { get; set; } 
public string Code { get; set; } 
} 

मैं की तरह

Mapper.CreateMap<CarViewModel, Car>() 
.ForMember(dest => dest.Code, opt => opt.Ignore().If(source => source.Id == 0)) 

कुछ के लिए देख रहा हूँ अब तक एकमात्र समाधान मैं भी दो अलग अलग दृश्य मॉडल का उपयोग करें और के लिए अलग मैपिंग बनाने है प्रत्येक।

उत्तर

39

Ignore() सुविधा सख्ती से उन सदस्यों के लिए है जिन्हें आप कभी मैप नहीं करते हैं, क्योंकि इन सदस्यों को कॉन्फ़िगरेशन सत्यापन में भी छोड़ दिया जाता है। मैंने कुछ विकल्पों की जांच की, लेकिन ऐसा नहीं लगता कि कस्टम वैल्यू रिज़ॉल्वर जैसी चीजें चाल चलती हैं।

Mapper.CreateMap<CarViewModel, Car>() 
.ForMember(dest => dest.Code, opt => opt.Condition(source => source.Id == 0)) 
+0

इस सुविधा :) –

+0

बहुत बढ़िया के लिए +1। बहुत बहुत धन्यवाद। – Castrohenge

+1

इस सुविधा की स्थिति क्या है? हम इसकी अपेक्षा कब कर सकते हैं? – mare

4

मैं ने वही समस्या में भाग गया, और जब तक इस अशक्त साथ dest.Code के लिए मौजूदा मूल्य के ऊपर लिख देगा, यह एक प्रारंभिक के रूप में उपयोगी हो सकता है: इसके बजाय, मैं की तरह एक सशर्त छोड़ें विन्यास विकल्प जोड़ने, को देखेंगे बिंदु:

AutoMapper.Mapper.CreateMap().ForMember(dest => dest.Code,config => config.MapFrom(source => source.Id != 0 ? null : source.Code));

+0

अच्छा कामकाज मैंने खुद को नहीं देखा था, लेकिन जिमी का रास्ता अभी भी बेहतर है। – alehro

संबंधित मुद्दे