2011-11-09 14 views
8

यह मेरा स्रोत है:Automapper मानचित्र को एकल के लिए (समतल)

public class User 
{ 
    public int UserId { get; set; } 

    public Address Address { get; set; } 
} 

public class Address 
{ 
    public string Address { get; set; } 
    public string State {get; set; } 
} 

यह मेरा गंतव्य है:

public class UserVM 
{ 
    public int UserId { get; set; } 

    public string Address { get; set; } 
    public string State { get; set; } 
} 

मैं मानचित्रण कैसे करते हैं? सामान्य बनाने का नक्शा तब काम नहीं करता जब वे कहते हैं कि फ़्लैटनिंग स्वचालित है।

उत्तर

15

आप AddressStreet और AddressState अपने गंतव्य वर्ग संपत्ति के नाम बदलते हैं, तो AutoMapper, प्रथा के अनुसार, उन्हें Address.Street और Address.State स्रोत पर करने के लिए मिलान कर देंगे।

public class UserVM 
{ 
    public int UserId { get; set; } 

    public string AddressStreet { get; set; } // User.Address.Street 
    public string AddressState { get; set; } // User.Address.State 
} 

वैकल्पिक रूप से, आप अपने गंतव्य संपत्ति के नाम छोड़ के रूप में और कस्टम सदस्य मैपिंग का उपयोग करें:

Mapper.CreateMap<User, UserVM>() 
    .ForMember(dest => dest.Street, opt => opt.MapFrom(src => src.Address.Street)) 
    .ForMember(dest => dest.State, opt => opt.MapFrom(src => src.Address.State)); 

अधिक जानकारी के लिए Projection और Flattening के लिए AutoMapper दस्तावेज़ देखें।

+1

यह कितना गहराई से जाता है? क्या होगा यदि मेरे पास उस उपयोगकर्ता के साथ उपयोगकर्ता है जिसके पास पते भी हैं? –

+0

@Lolcoder, मुझे यकीन नहीं है; मुझे दस्तावेज़ीकरण में उल्लिखित कोई सीमा नहीं दिखाई दे रही है। ऑटोमैपर से अधिक परिचित किसी के लिए एक नया प्रश्न लायक हो सकता है। –

+0

क्या इस सम्मेलन के साथ इसके विपरीत होने का कोई आसान तरीका है? –

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