AutoMapper

در این مقاله نشان می دهیم که AutoMapper چیست و چگونه می توان از آن در MVC استفاده کرد.

قبل از شروع این مقاله می خواهیم تعریفی از AutoMapper را به شما ارائه می دهیم.

AutoMapper یک mapper(نگاشت دهنده) object-object می باشد که راه حلی برای مشکل نگاشت دستی هر یک از property های یک کلاس به propertyهای یک کلاس دیگر است.

قبل از اینکه AutoMapper معرفی شد اگر می خواستیم propertyهای یک شی را به شی دیگری اختصاص دهیم، باید یک فرایند طولانی و دشواری را طی می کردیم.

باید هر یک از property ها را برای این دو شی نگاشت می کردیم.

فرض کنید در یک کلاس ۳۰ property داشتیم و می خواستیم این ها را با propertyهای یک کلاس دیگر نگاشت نماییم، بنابراین باید هر یک از این ۳۰ property را یک به یک به طور دستی نگاشت می کردیم.

AutoMapper

بنابراین، برای حل این مشکل مفهوم جدیدی با عنوان AutoMapper ارائه شد، که این مشکل را در دو مرحله حل می کند.

 AutoMapper در MVC

در اینجا توضیح می دهیم که چگونه از AutoMapper استفاده کرده و یک عملیات insert ساده را انجام دهیم.

یک پروژه MVC جدید با لایه های زیر ایجاد می کنیم. در اینجا از لایه Repository استفاده کرده ایم که همه interface های ما در آن ذخیره می شوند.

 کاربرد های AutoMapper

در اینجا همه لایه ها را توضیح نخواهیم داد، همان طور که می دانید از Entity Framework با Repository pattern استفاده می کنیم. در لایه Repository یک interface برای یک عملیات خاص داریم.

شکل زیر، UI مخصوص ثبت نام می باشد:

AutoMapper

و در اینجا model ای به شکل زیر تعریف می کنیم:


public class RegisterModel    
{    
  
    public string FirstName { get; set; }    
        
    public string LastName { get; set; }    
        
    public string Password { get; set; }    
       
    public string Email { get; set; }    
    public string ImageUrl { get; set; }    

و این هم interface مخصوص ثبت نام که در لایه Repository تعریف کرده ایم:


namespace MyProjectRepository  
{  
    public interface IRegister  
    {  
        bool Register(RegisterModel reg);  
        
    }  
}  

در ادامه کلاس “MyProjectBLL” را مشاهده می کنید که در آن IRegister را پیاده سازی کرده ایم:


public class RegisterManager:IRegister    
{    
        
    CodeXEntities _codex = new CodeXEntities();    
    public bool Register(RegisterModel reg)    
    {    
           
            bool result = false;    
            tbl_Registration tbl = new tbl_Registration();    
            tbl.Email = reg.Email;    
            tbl.FirstName = reg.FirstName;    
            tbl.LastName = reg.LastName;    
            tbl.Password = reg.Password;    
             
            _codex.tbl_Registration.Add(tbl);    
            if (_codex.SaveChanges()==1)    
            {    
                return true;    
            }    
          else  
          {  
          return false;   
           }  
       
           
         }   

کاربرد های AutoMapper

روش بالا، روش نگاشت دستی property های دو کلاس به صورت یک به یک می باشد که با افزایش تعداد property ها بسیار پیچیده می شد. بنابراین برای جلوگیری از این پیچیدگی، باید از AutoMapper استفاده نماییم.

[divider style=”normal” top=”20″ bottom=”20″] [box type=”note” align=”” class=”” width=””]

پیشنهاد میکنم:از نینجای MVC چه میدانید ؟

[/box] [divider style=”normal” top=”20″ bottom=”20″]

برای استفاده از AutoMapper، ابتدا NuGet را نصب می کنیم، سپس AutoMApper را از کنسول package manager نصب می نماییم.

PM> Install-Package AutoMapper

آیا می توان به صورت مستقیم از طریق Nuget Package Manager این کار را انجام داد.

استفاده از AutoMapper در MVc

پس از نصب، باید از فضای نام زیر استفاده نماییم.

using AutoMapper

حال برای استفاده از AutoMapper دو مرحله وجود دارد:

  1. ایجاد Map

 MVC

با استفاده از Mapper.createMap<sourceClass,DestinationClass()>; می توانیم یک Map ایجاد کنیم.

۲.ذخیره جزئیات Map

 AutoMapper

برای این کار به ترتیب تصویر بالا عمل می کنیم.

حال کلاس “MyProjectBLL” را به صورت زیر تغییر می دهیم تا AutoMapper را پیاده سازی کنیم.


public class RegisterManager:IRegister    
{    
       
    CodeXEntities _codex = new CodeXEntities();    
    public bool Register(RegisterModel reg)    
    {    
           
            bool result = false;    
               
            Mapper.CreateMapRegisterModel, tbl_Registration();  //creating map  
  
            var userDto = Mapper.MapRegisterModel, tbl_Registration(reg);  //  
  
  
            _codex.tbl_Registration.Add(userDto);    
            if (_codex.SaveChanges()==1)    
            {    
                return true;    
            }    
            else    
            {    
                return false;    
            }    
    }    

به این ترتیب، AutoMapper پیاده سازی می شود.

حال برنامه را اجرا کرده و عمل ثبت را انجام می دهیم.

 AutoMapper چیست

فاطمه زکایی

فاطمه زکایی هستم. فارغ التحصیل کارشناسی مهندسی نرم افزار، مدت سه سال هست که در زمینه توسعه اپلیکیشن های تحت وب و اندروید و همچنین تولید محتوای تخصصی برنامه نویسی تحت وب و اندروید در مجموعه mspsoft در خدمت شما هستم.

نوشته‌های مرتبط

دیدگاه‌ها

*
*

این سایت از اکیسمت برای کاهش هرزنامه استفاده می کند. بیاموزید که چگونه اطلاعات دیدگاه های شما پردازش می‌شوند.

    بهنام پاسخ

    تشکر