آموزش استفاده از Automapper در Asp.net core به صورت عملی
سلام. لطفا یک نمونه مثال از صفر تا 100 برای استفاده از Automapper در Asp.net core قرار بدید تا بنده که تجربه استفاده از این کتابخانه رو ندارم دقیق بدونم چجوری باید از این کتابخانه استفاده کنم.
پاسخ هوش مصنوعی
Automapper یک کتابخانه مفید برای نقشه برداری بین آبجکت های مختلف در ASP.NET Core است. در اینجا یک مثال واقعی از نحوه استفاده از Automapper ارایه می شود.
ابتدا، پروژه ASP.NET Core خود را ایجاد کنید.
dotnet new webapi -n AutomapperExample
cd AutomapperExample
سپس، بسته NuGet Automapper و Automapper.Extensions.Microsoft.DependencyInjection را نصب کنید:
dotnet add package AutoMapper
dotnet add package AutoMapper.Extensions.Microsoft.DependencyInjection
حالا، یک مدل و یک ViewModel ایجاد کنید. مثال زیر را در پوشه Models
اضافه کنید:
namespace AutomapperExample.Models
{
public class User
{
public int Id { get; set; }
public string Name { get; set; }
public string Email { get; set; }
}
}
و یک ViewModel در پوشه Models
ایجاد کنید:
namespace AutomapperExample.Models
{
public class UserDto
{
public string Name { get; set; }
public string Email { get; set; }
}
}
حالا فایل Startup.cs
را باز کرده و Automapper را در متد ConfigureServices
ثبت کنید:
using AutoMapper;
public void ConfigureServices(IServiceCollection services)
{
services.AddControllers();
services.AddAutoMapper(AppDomain.CurrentDomain.GetAssemblies());
}
بعد از آن، یک پروفایل برای نقشه برداری ایجاد کنید. یک کلاس جدید به نام UserProfile
در پوشه Models
ایجاد کنید:
using AutoMapper;
namespace AutomapperExample.Models
{
public class UserProfile : Profile
{
public UserProfile()
{
CreateMap();
}
}
}
حال بیایید یک کنترلر ایجاد کنیم تا بتوانیم از Automapper استفاده کنیم. یک کنترلر جدید به نام UsersController
در پوشه Controllers
ایجاد کنید:
using AutoMapper;
using Microsoft.AspNetCore.Mvc;
using AutomapperExample.Models;
using System.Collections.Generic;
using System.Linq;
namespace AutomapperExample.Controllers
{
[ApiController]
[Route("[controller]")]
public class UsersController : ControllerBase
{
private static List users = new List
{
new User { Id = 1, Name = "Alice", Email = "alice@example.com" },
new User { Id = 2, Name = "Bob", Email = "bob@example.com" }
};
private readonly IMapper _mapper;
public UsersController(IMapper mapper)
{
_mapper = mapper;
}
[HttpGet]
public ActionResult> GetUsers()
{
var userDtos = _mapper.Map>(users);
return Ok(userDtos);
}
}
}
حالا، برنامه را اجرا کنید:
dotnet run
و به آدرس http://localhost:5000/users
بروید. شما باید یک لیست از کاربرانی که به UserDto
نقشه برداری شده اند را ببینید.
این تمام فرآیند استفاده از Automapper در ASP.NET Core است. به راحتی می توانید مودل های دیگر و روابط بیشتری را پیاده سازی کنید.
نحوه استفاده از Automapper و دلایل استفاده از اون رو می تونید توی این لینک بخونید.
اما به طور خلاصه یک مثال ساده رو براتون انجام میدم.
فرض کنید شما در پروژه خودتون یک Entity دارید با فیلدهای زیر
public class Users
{
public string FirstName { get; set; }
public string Family { get; set; }
public byte? Age { get; set; }
public string PersonalCode { get; set; }
public string MelliCode { get; set; }
public string Address { get; set; }
public string ImagePath { get; set; }
{
البته این یک نمونه ساده هست و گاهی تعداد فیلدهای شما خیلی بیشتر میشه. حالا برای اینکه از این جدول توی پروژه خودتون استفاده کنید یک ViewModel ساختید و از اون ViewModel دارید توی View های خودتون استفاده می کنید.
ViewModel هم به صورت زیر هست
public class UserViewmodel
{
public string Id { get; set; }
[Display(Name = "نام")]
[Required(AllowEmptyStrings = false, ErrorMessage = "نام را وارد کنید.")]
public string FirstName { get; set; }
[Display(Name = "فامیلی")]
[Required(AllowEmptyStrings = false, ErrorMessage = "فامیلی را وارد کنید.")]
public string Family { get; set; }
[Display(Name = "کد پرسنلی")]
[Required(AllowEmptyStrings = false, ErrorMessage = "کد پرسنلی را وارد کنید.")]
public string PersonalCode { get; set; }
[Display(Name = "کد ملی")]
[Required(AllowEmptyStrings = false, ErrorMessage = "کد ملی را وارد کنید.")]
[RegularExpression("^[0-9]*$", ErrorMessage = "فرمت کد ملی صحیح نیست")]
public string MelliCode { get; set; }
[Display(Name = "ایمیل")]
[Required(AllowEmptyStrings = false, ErrorMessage = "ایمیل وارد نشده است.")]
public string Email { get; set; }
[Display(Name = "موبایل")]
[Required(AllowEmptyStrings = false, ErrorMessage = "شماره موبایل را وارد کنید.")]
public string PhoneNumber { get; set; }
[Display(Name = "نام کاربری")]
[Required(AllowEmptyStrings = false, ErrorMessage = "نام کاربری را وارد کنید.")]
public string UserName { get; set; }
[Display(Name = "آدرس")]
[Required(AllowEmptyStrings = false, ErrorMessage = "آدرس را وارد کنید.")]
public string Address { get; set; }
[Display(Name = "جنسیت")]
public byte Gender { get; set; }
[Display(Name = "تصویر")]
public string ImagePath { get; set; }
}
خب در Controller پروژه وقتی که می خواید اطلاعات رو از سمت View به سمت Controller ارسال کنید شما باید یک model ارسال کنید که مدل شما همون ViewModel هست. پس اطلاعات موجود در ViewModel رو به سمت سرور ارسال می کنید و حالا باید این اطلاعات رو بریزید داخل Entity یا همون جدول Users که برای انجام این کار باید تک تک فیلدها رو مقدار دهی کنید. در واقع یک چیزی مشابه دستورات زیر رو باید انجام بدید.
UserViewModel model = new UserViewModel();
var user = new Users
{
FirstName = model.FirstName,
Family = model.Family,
PersonalCode = model.PersonalCode,
MelliCode = model.MelliCode,
Email = model.Email,
UserName = model.UserName,
Address = model.Address,
BirthDayDate = model.BirthDayDate,
Gender = r1,
IsActive = 1,
RegisterDate = DateTime.Now,
ImagePath = userimgName
};
حالا اگر فرض کنید که تعداد فیلدهاتون خیلی زیاد باشه کدنویسی شما هم خیلی زیاد میشه. پس در این حالت برای این مقادیر رو از یک ViewModel به درون یک Model بریزید میتونید خیلی راحت از Automapper ها استفاده کنید.
آموزش استفاده از Automapper در Asp.net core
مرحله اول
در مرحله اول باید پکیج زیر رو به پروژه از طریق nuget اضافه کنید
Install-Package AutoMapper.Extensions.Microsoft.DependencyInjection -Version 7.0.0
بعد از اون فایل startup.cs رو باز کنید و در متد ConfigureServices کد زیر رو اضافه کنید
services.AddAutoMapper(typeof(Startup));
حالا یک پوشه به نام AutoMapper ایجاد کنید و درون این پوشه یک کلاس به نام AutoMapping ایجاد کنید و کد زیر رو داخلش بنویسید
public class AutoMapping : Profile
{
public AutoMapping()
{
CreateMap<Users, UserViewmodel>().ReverseMap();
}
}
به تصویر زیر دقت کنید
تا اینجای کار پروژه آماده استفاده از Automapper در Asp.net core می باشد. حالا باید در کنترلر از این قابلیت استفاده کنید.
با استفاده از کد زیر می توانید به راحتی از Automapper استفاده کنید و مقادیر متناظر بین ViewModel و جدول خودتون رو مقدار دهی کنید
using AutoMapper;
public class UserController
{
private readonly IMapper _mapper;
public UserController(IMapper mapper)
{
_mapper = mapper;
}
[HttpPost]
public IActionResult AddUser(UserViewModel model)
{
var mapModel = _mapper.Map<Users>(model);
}
}
در اینجا مقدار متغیر model همان UserViewModel می باشد.
من کد
.ReverseMap()
ننوشتم ولی کار میکنه. فرقش چیه؟
- آموزش استفاده از پلاگین گردونه شانس در Asp.net core به همراه سورس
- نمایش متن به صورت فرمت شده در CkEditor
- آموزش استفاده از SignalR در Asp.net Core با مثال عملی
- ادغام چند گزارش استیمول سافت بصورت پی دی اف در یک فایل
- نحوه تغییر استایل کامپوننت select2 چگونه است ؟
- چگونه امنیت پروژه را در Asp.net Core افزایش دهیم ؟
- ارسال پارامتر در دستور window.open جی کویری
- ارسال پارامتر از طریق جاوااسکریپت با کلیک روی تگ a
- خطای 500 زمان اجرا شدن پروژه روی هاست
- کویری نویسی در استیمول سافت جهت فیلتر اطلاعات
- کار با CkEditor با قابلیت آپلود عکس
- خطا در ایجاد migration در Asp.net core
- تفاوت های Asp.net core و Asp.net mvc چیه؟
- دلیل اسپم شدن ایمیل های ارسالی از سرور
- نحوه لایه بندی پروژه Core و اضافه کردن به IIS
- ارسال ایمیل در Asp.net core
- آیا میشه در mvc core از کامپونت استفاده کرد
- آپلود فایل در Asp.net core چگونه است؟
- حذف کامل یک رکورد در جدول ریلیشن شده
- اشکال در آپلود فایل ویدیو در mvc core 2