2017-03-15 12 views
7

में Automapper मैं एक कार वेबएपीआई नियंत्रक पद्धति के रूप में नीचे है - ध्यान दें _carService.GetCarData रिटर्न CarDataDTO का एक संग्रह वस्तुओंवेबएपीआई नियंत्रक

[HttpGet] 
[Route("api/Car/Retrieve/{carID}/{year}")] 
public IEnumerable<CarData> RetrieveTest(int carID, int year) 
{ 
    //Mapper.Map<> 
    var cars = _carService.GetCarData(carID, year); 
    //var returnData = Mapper.Map<CarData, CarDataDTO>(); 
    return cars; 
} 

CarData एक वेबएपीआई मॉडल मैं बनाया है है। मैं व्यवसायिक के साथ कहा जाता है एक संग्रहीत proc के माध्यम से डेटा पुनः प्राप्त -

public class CarData 
{ 
    public string Name { get; set; } 
    public string Colour { get; set; } 
    //other properties removed from brevity 
} 

CarDataDTO एक वर्ग मैं द्वारा बनाए गए मॉडल डीबी तालिका है।

public class CarDataDTO 
{ 
    public int CarDataID { get; set; } 
    public int CarID { get; set; } 
    public int Year { get; set; } 
    public string Name { get; set; } 
    public string Colour { get; set; } 
    //other properties removed from brevity 
} 

अगर मैं अपने एपीआई नियंत्रक में वर कारों लाइन पर एक ब्रेकपाइंट है मैं सब कुछ देख सकते लौटे उम्मीद है और मैं CarDTO वस्तुओं का संग्रह है के रूप में। हालांकि, मैं CarDataID, CarID या वर्ष जिसके कारण मैं CarData एपीआई मॉडल बनाया वापस जाने के लिए वेबएपीआई आवश्यकता नहीं है।

कैसे मैं आसानी से Automapper उपयोग कर सकते हैं केवल उन्हीं प्रॉपर्टी के साथ मैं चिंतित हूँ मैप करने के लिए?

मैं कुछ मेरी WebApiConfig वर्ग में स्थापित की जरूरत है?

उत्तर

17

आप से AutoMapper nuget पैकेज स्थापित कर सकते हैं: AutoMapper और फिर एक वर्ग की तरह घोषित:

public class AutoMapperConfig 
{ 
    public static void Initialize() 
    { 
     Mapper.Initialize((config) => 
     { 
      config.CreateMap<Source, Destination>().ReverseMap(); 
     }); 
    } 
} 

और फिर इस तरह से अपनी Global.asax में इस फोन:

public class WebApiApplication : System.Web.HttpApplication 
{ 
    protected void Application_Start() 
    { 
     AutoMapperConfig.Initialize(); 
     GlobalConfiguration.Configure(WebApiConfig.Register); 
    } 
} 

और अगर आप कुछ गुण उपेक्षा करना चाहते हैं तो आप कुछ इस तरह कर सकता है:

Mapper.CreateMap<Source, Destination>() 
    .ForMember(dest => dest.SomePropToIgnore, opt => opt.Ignore()) 

और जिस तरह से आप मानचित्रण के लिए इस का उपयोग है:

DestinationType obj = Mapper.Map<SourceType, DestinationType>(sourceValueObject); 
List<DestinationType> listObj = Mapper.Map<List<SourceType>, List<DestinationType>>(enumarableSourceValueObject); 
+0

हाय Jinish - यह कैसे तो वास्तविक एपीआई विधि में इस्तेमाल किया जाएगा? –

+0

सिर्फ उपयोग उदाहरण के लिए इस सवाल का जवाब अद्यतन – Jinish

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