यदि मैं द्वि-दिशात्मक मैपिंग करना चाहता हूं, तो क्या मुझे दो मैपिंग बनाने की आवश्यकता है?ऑटोमैपर बिडरेक्शनल मैपिंग
Mapper.CreateMap<A, B>() and Mapper.CreateMap<B, A>()
?
यदि मैं द्वि-दिशात्मक मैपिंग करना चाहता हूं, तो क्या मुझे दो मैपिंग बनाने की आवश्यकता है?ऑटोमैपर बिडरेक्शनल मैपिंग
Mapper.CreateMap<A, B>() and Mapper.CreateMap<B, A>()
?
हां, क्योंकि यदि आप कुछ संपत्ति के प्रकार को बदलते हैं (उदाहरण के लिए डेटटाइम -> स्ट्रिंग) यह बिडरेक्शनल नहीं है (आपको स्ट्रॉम -> डेटटाइम को कन्वर्ट करने के लिए ऑटोमैपर को निर्देश देना होगा)।
हाँ, पर आप अपने आप को इस बार कर पाते हैं:
public static class AutoMapperExtensions
{
public static void Bidirectional<TSource, TDestination>(this IMappingExpression<TSource, TDestination> expression)
{
Mapper.CreateMap<TDestination, TSource>();
}
}
तो:
Mapper.CreateMap<A, B>().Bidirectional();
बहुत अच्छा विचार है एरिक! मैंने एक वापसी मूल्य जोड़ा है, इसलिए रिवर्स मैपिंग भी कॉन्फ़िगर करने योग्य है।
public static class AutoMapperExtensions
{
public static IMappingExpression<TDestination, TSource> Bidirectional<TSource, TDestination>(this IMappingExpression<TSource, TDestination> expression)
{
return Mapper.CreateMap<TDestination, TSource>();
}
}
यह अब AutoMapper में शामिल किया हुआ है
Mapper.CreateMap<SourceType, DestType>().ReverseMap();
यह कस्टम मैपिंग के साथ काम नहीं करता है, केवल तभी जब संपत्ति के नाम दोनों कक्षाओं में समान होते हैं। –
भावना बनाता है, लेकिन यह अच्छा होगा यह पुस्तकालय एक सम्मेलन के रूप में मानचित्रण करने की कोशिश की है, और आप स्पष्ट रूप से अक्षम कर सकते हैं, तो यह नहीं था काम कर रहे। उदाहरण के लिए, मैं मॉडल देखने के लिए डोमेन ऑब्जेक्ट्स को मैप करता हूं और बिडरेक्शनल मैपिंग मेरे लिए पूरी तरह से काम करेगा। –