Automapper چیست ؟

در این مقاله قصد داریم تا یک آشنایی ابتدایی با Automapper را داشته باشیم . بعد از معرفی ، با ارائه یک مثال به نحوه کار با Automapper در یک برنامه می پردازیم .

Automapper یک شی از شی مرتب کننده (The object mapper) است . بدین ترتیب ، ما توانایی مرتب سازی خصوصیات (propeties) یک شی از یک نوع ، نسبت به خصوصیات دیگر اشیا داریم . Automapper بطور گسترده در مواردی که DTO _ مخفف (Data Transfer Object) _ استفاده میشود ، مورد استفاده قرار میگیرد. بدین ترتیب ، خصوصیات اشیا خیلی آسان میتواند از View Object به DTO و از DTO object به Domin Model منتقل شود .

Automapper چه مشکلی را حل میکند ؟
در View ، وقتی شی PersonDTO  را از Middle layer میگیریم ، ما باید personObject را  نشان دهیم .

PersonDTO personDTO = GetPersonFromDB(); 
PersonView personview = new PersonView()  
{ 
    FirstName = personDTO.FirstName, 
        LastName = personDTO.LastName 
}

وارد کردن مشخصات هر شی در view کار خسته کننده ای است . Auto mapper راه حل همچین مسائلی است .

روش کار آن :
Automapper  یک شی از شی مرتب کننده (The object mapper) است . مرتب سازی شی-شی با فرستادن ورودی یک شی با یک نوع به خروجی یک شی با نوع متفاوت ، کار می کند .

1-Automapper

 بنابراین ، Automapper بین منبع و مقصد شی قرار میگیرد .
حالا ، در یک پروژه کنسول ، nuget package automapper را اضافه کنید .

2-Automapper

بعضی مواقع ، ممکنه با اشکالاتی نظیر زیر مواجه بشوید . که این به دلیل سازگار نبودن نسخه
nuget package manager و automapper version .

3-Automapper

 شما میتوانید بصورت مستقیم نسخه یایین تری از Automapper را با استفاده از package manager console – با نصب کردن Package AutoMapper – Version 3.3.1.

4-Automapper

5-Automapper

حالا ، دو کلاس ایجاد میکنیم .

public class Person { 
    public string FirstName { 
        get; 
        set; 
    } 
    public string LastName { 
        get; 
        set; 
    } 
    public string UID { 
        get; 
        set; 
    } 
    public DateTime DateOfBirth { 
        get; 
        set; 
    } 
} 
And 
public class PersonDTO { 
    public string FirstName { 
        get; 
        set; 
    } 
    public string LastName { 
        get; 
        set; 
    } 
    public string UID { 
        get; 
        set; 
    } 
    public DateTime DateOfBirth { 
        get; 
        set; 
    } 
}

همانطور که مشاهد میکنید هر دو کلاس دارای خصوصیات مشترکی هستند . به کمک Automapper ، ما میتونیم مقادیر مشخصات یک شی را به یک شی دیگر ارسال کنیم . که در زیر چگونگی این کار را نشان میدهیم :

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.Threading.Tasks; 
using AutoMapper; 
namespace NInjectSample2 { 
    class Program { 
        static void Main(string[] args) { 
            Mapper.CreateMap < Person, PersonDTO > (); 
            Person pr = new Person() { 
                FirstName = "Vivek", 
                    LastName = "Tripathi", 
                    UID = "VT001" 
            }; 
            //PersonDTO prDTO = Mapper.Map(pr, new PersonDTO()); 
            PersonDTO prDTO = Mapper.Map < Person, PersonDTO > (pr); 
            Console.WriteLine("DTO - Name - " + prDTO.FirstName + " Lastname - " + prDTO.LastName + " - UID -" + prDTO.UID); 
            Console.ReadKey(); 
        } 
    } 
}

6-Automapper

در ادامه مثال های پیچیده تری را داریم . فرض کنید ، که ما DTO یک FullName.Property را داریم که این ترکیبی از اسم و فامیلی مشتری ها است .

public string FullName { get; set; }

ما مجبوریم که بعضی چیز ها را در Createmap تغییر دهیم .

Mapper.CreateMap<Person, PersonDTO>().ForMember(s => s.FullName, 
	d => d.MapFrom(v => v.FirstName + " " + v.LastName));
 
<img alt="" src="/ImagesArticle/2de458d741604841b629ebf68f16a391.jpg" style="height:105px; width:602px">

با این کار ، میتوانیم تغییرات را مشاهده کنیم .

Automapper چیست ؟
امتیاز دهید

(434 نوشته)

C# Programmer , Web Design And Developer , MVC , ASP.NET

فکر شما چیست؟

آدرس ایمیل شما منتشر نخواهد شد. بخشهای موردنیاز علامتگذاری شدهاند *

حاصل جمع اعداد را وارد کنید : *