پیکربندی و نصب AutoMapper

در این قسمت به پیکربندی و نصب AutoMapper میپردازیم.قصد داریم از AutoMapper در پروژه های Asp.Net Core 8 همراه با EF Core 9 استفاده کنیم. تصور کنید در حال ساخت یک برنامه پیچیده هستید. داده‌های زیادی دارید. که باید از دیتابیس خوانده شوند. و در قسمت‌های مختلف برنامه نمایش داده شوند؛ مثلاً یک سیستم مدیریت کاربران. هر کاربر اطلاعات زیادی مثل نام، نام خانوادگی، تاریخ تولد، نقش‌ها و مجوزها دارد. اما در بسیاری از بخش‌ها نیازی به نمایش تمام این اطلاعات نیست. مثلاً در صفحه لیست کاربران، فقط نام، ایمیل و نقش آن‌ها نمایش داده می‌شود. حالا چطور می‌توانید این داده‌های پیچیده را به مدل‌های ساده‌تر تبدیل کنید؟

اگر بخواهید این کار را به صورت دستی انجام دهید، مجبورید برای هر مدل یک کد تبدیل بنویسید. این کدها هم طولانی هستند، هم تکراری و احتمال خطا در آن‌ها زیاد است. دقیقاً اینجاست که یک ابزار قدرتمند مثل AutoMapper به کمک شما می‌آید. AutoMapper مانند یک مترجم حرفه‌ای عمل می‌کند؛ کافی است به آن بگویید که چگونه داده‌های شما از یک مدل به مدل دیگر تبدیل شوند و بقیه کارها را به آن بسپارید. اما مثل هر ابزار دیگری، برای استفاده از آن باید تنظیمات اولیه‌ای انجام دهید. این مرحله همان چیزی است که به آن پیکربندی اولیه و تعریف نقشه‌برداری‌ها (Mappings) می‌گوییم.

چرا پیکربندی اولیه مهم است؟

AutoMapper ذاتاً هیچ شناختی از مدل‌های شما ندارد. اگر بخواهید بین دو مدل، مثلاً مدل کاربر (User) و مدل نمایشی آن (UserDto)، داده‌ها را منتقل کنید، باید به AutoMapper یاد بدهید که چه ویژگی‌هایی از مدل مبدا به مدل مقصد مرتبط هستند. این فرآیند پایه و اساس کار با AutoMapper است و اگر به درستی انجام شود، می‌تواند حجم زیادی از کارهای دستی و خسته‌کننده شما را حذف کند.

پیکربندی صحیح به شما کمک می‌کند:

  • از خطاهای رایج در تبدیل داده‌ها جلوگیری کنید.
  • کدهای خود را مرتب‌تر و خواناتر کنید.
  • به راحتی تغییرات را در مدل‌های خود اعمال کنید بدون اینکه نگران بروزرسانی دستی کدها باشید.

مراحل پیکربندی و نصب AutoMapper

برای شروع کار با AutoMapper، باید چند گام ساده را طی کنیم. در ادامه این گام‌ها را به تفصیل توضیح می‌دهیم:

  • نصب AutoMapper : اولین گام این است که کتابخانه AutoMapper را به پروژه خود اضافه کنید. این کار را می‌توانید با استفاده از NuGet انجام دهید.
Install-Package AutoMapper
  • ایجاد یک کلاس Profile : پروفایل یک کلاس ارائه‌شده توسط AutoMapper است. برای تعریف Mappings ها استفاده می‌شود. این کلاس کمک می‌کند Mappings ها سازمان‌دهی شوند و پروژه‌های بزرگ خواناتر باشند.

مسیر پیشنهادی

Application/Mappings/MappingProfile.cs

نمونه کد تعریف نوع Mapping

public MappingProfile()
{
    CreateMap<Manager,ManagerViewModel>().ReverseMap();
}

AutoMapper باید به Dependency Injection (DI) پروژه اضافه شود. این کار را می‌توانید در فایل Program.cs انجام دهید.

builder.Services.AddAutoMapper(typeof(MappingProfile));
OR
builder.Services.AddAutoMapper(AppDomain.CurrentDomain.GetAssemblies());

کد AppDomain.CurrentDomain.GetAssemblies تمام اسمبلی‌های موجود در دامنه برنامه (Current AppDomain) اسکن می‌شوند. این یعنی تمام کلاس‌هایی که از Profile ارث‌بری کرده‌اند، بدون توجه به این که در کدام پروژه یا لایه قرار دارند، شناسایی می‌شوند. برای پروژه‌های چند لایه که کلاس‌های Profile در لایه‌های مختلف تعریف شده.

کد typeof(Program) فقط اسمبلی‌ای که کلاس Program در آن قرار دارد (معمولاً پروژه اصلی مثل WebAPI یا UI) اسکن می‌شود. کلاس‌های Profile که در این اسمبلی باشند شناسایی و ثبت می‌شوند. مناسب برای: پروژه‌های تک لایه یا ساده که تمام پروفایل‌های AutoMapper در پروژه اصلی تعریف شده‌اند.

  • نمونه کدهای Controller
private readonly MyDbContext _context;
private readonly IMapper _mapper;
//
public ManagersController(MyDbContext context, IMapper mapper)
{
    _context = context;
    _mapper = mapper;
}
//
List<ManagerViewModel> managerVm = _mapper.Map<List<ManagerViewModel>>(ManagerM);
//
var managerVm = await _context.managers.AsNoTracking().
    ProjectTo<ManagerViewModel>(_mapper.ConfigurationProvider).ToListAsync();
//
var manager = _mapper.Map<Manager>(managerVm);

مشاهده در آپارات یا یوتیوب

محتوای ویدیویی این صفحه در سایت قابل مشاهده است. اما اگر عادت دارید توی پلتفرم آپارات یا یوتیوب ویدیوها را مشاهده کنید، می‌توانید از دکمه‌های زیر استفاده کنید.

تماشای ویدیوی پیکربندی و نصب AutoMapper در آپارات و یوتیوب

اشتراک‌گذاری با یک کلیک

با یک کلیک، محتوای این صفحه را در شبکه‌های اجتماعی، ایمیل یا پیام‌رسان‌های مورد علاقه‌تان به‌سرعت به اشتراک بگذارید.

اشتراک‌گذاری صفحه پیکربندی و نصب AutoMapper در شبکه‌های اجتماعی

نظرات ارزشمند شما

نظرات شما برای ما ارزشمند است و آنها را میخوانیم و پاسخ میدهیم.

تصویر amresen

سلام و خسته نباشید
تو ثبت AutoMapper اگر از نسخه جدید AutoMapper (مثل v15.0.1) استفاده می‌کنی، باید از delegate استفاده کنی. این کد رو در Program.cs قرار بده:
builder.Services.AddAutoMapper(cfg => ;cfg.AddMaps(typeof(MappingProfile).Assembly))

تصویر سمانه

سلام
من از .net9 استفاده می کنم. از هر ورژن automapper که استفاده میکنم با ارور در اجرا مواجه می شم
Unable to resolve service for type 'AutoMapper.Mapper' while attempting to activate
در Program.cs هم از همه روش ها استفاده کردم ولی همه ارور میده
میشه راهنمایی کنین؟

تصویر محمدرضا احدیان

سلام داخل کد دارید AutoMapper.Mapper تزریق می کنید و باید IMapper تزریق شود

فرم افزودن دیدگاه

با ارسال نظرات خود ما را در ایجاد محتوای بهتر کمک کنید.

با خدمات تهران آی تی آشنا شوید

تهران آی تی با افتخار خدمات زیر را ارائه می‌دهد.