2010-12-07 18 views
18

के साथ किसी बच्चे में किसी संपत्ति के अभिभावक संदर्भ को कैसे असाइन करें I अपने ऑब्जेक्ट पैरेंट ऑब्जेक्ट के संदर्भ में किसी गंतव्य ऑब्जेक्ट में किसी संपत्ति को सेट करने के लिए ऑटोमैपर को कॉन्फ़िगर करने का तरीका ढूंढने का प्रयास कर रहा हूं। नीचे दिया गया कोड दिखाता है कि मैं क्या हासिल करने की कोशिश कर रहा हूं। मैं डेटा ऑब्जेक्ट्स से अभिभावक & बाल उदाहरणों में डेटा ले जा रहा हूं। मैपिंग सही डेटा के साथ सूची संग्रह बनाने के लिए ठीक काम करता है लेकिन मुझे पैरेंट इंस्टेंस संदर्भ असाइन करने के लिए फॉरएच होना चाहिए।ऑटोमैपर

public class ParentChildMapper 
{ 
    public void MapData(ParentData parentData) 
    { 
     Mapper.CreateMap<ParentData, Parent>(); 
     Mapper.CreateMap<ChildData, Child>(); 

     //Populates both the Parent & List of Child objects: 
     var parent = Mapper.Map<ParentData, Parent>(parentData); 

     //Is there a way of doing this in AutoMapper? 
     foreach (var child in parent.Children) 
     { 
      child.Parent = parent; 
     } 

     //do other stuff with parent 
    } 
} 

public class Parent 
{ 
    public virtual string FamilyName { get; set; } 

    public virtual IList<Child> Children { get; set; } 
} 

public class Child 
{ 
    public virtual string FirstName { get; set; } 

    public virtual Parent Parent { get; set; } 
} 

public class ParentData 
{ 
    public string FamilyName { get; set; } 

    public List<Child> Children { get; set; } 
} 

public class ChildData 
{ 
    public string FirstName { get; set; } 
} 

उत्तर

46

AfterMap का उपयोग करें। इस तरह कुछ:

Mapper.CreateMap<ParentData, Parent>() 
    .AfterMap((s,d) => { 
     foreach(var c in d.Children) 
      c.Parent = d; 
     }); 
+1

मैं पूरी तरह से एक लूप का उपयोग करने से बचने की उम्मीद कर रहा था लेकिन आपका उत्तर एकमात्र विकल्प प्रतीत होता है। कुछ ऐसा: .मेम्बर (dest => dest. parent, opt => opt.MapFrom (src => src)) जो मैं खोज रहा था, लेकिन यह काम नहीं करता है। धन्यवाद! –

+1

धन्यवाद पैट्रिक, आपके समाधान ने बहुत मदद की :) – Davita

+4

मैं कुछ अलग करने की उम्मीद कर रहा था। यदि आपके पास> 1 बाल सूची है जिसे आपको संसाधित करने की आवश्यकता है तो यह बहुत बदसूरत हो जाता है। –

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