می خواستم بدونم که Automapper در Asp.net core چیست ؟ کاربردهای Automapper چیست ؟ و اینکه نحوه استفاده از Automapper در Asp.net core چجوری هست ؟
فرض کنید توی پروژه خودتون یک کلاس دارید که شامل فیلدهای زیر هست
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; }
public string SignaturePath { get; set; }
public string BirthDayDate { get; set; }
public DateTime RegisterDate { get; set; }
public byte IsActive { get; set; }
public byte Gender { get; set; }
{
در کلاس بالا که در واقع همان فیلدهای دیتابیس ما هستند تعدادی ستون وجود دارد. در طول کدنویسی شما نیاز دارید که اطلاعات این ستونها رو در نرم افزار خودتون نمایش بدید. یا اینکه در این جدول اطلاعاتی رو ثبت کنید و یا ویرایش اطلاعات رو انجام بدید. معمولا ما برای نمایش اطلاعات یا افزودن یا ویرایش اطلاعات جدول از یک ViewModel استفاده می کنیم. یعنی مستقیم با خود جدول کار نمی کنیم.
در ادامه یک ViewModel بر اساس جدول Users ایجاد شده است:
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; }
[Display(Name = "امضا")]
public string SignaturePath { get; set; }
[Display(Name = "تاریخ تولد")]
[Required(ErrorMessage = "تاریخ تولد را وارد کنید.")]
public string BirthDayDate { get; set; }
}
خب فرض کنید حالا قصد داریم فرم ثبت نام کاربران را با استفاده از این ViewModel در Asp.net core ایجاد کنیم. در بخش Controleer و اکشن مربوط به افزودن کاربران به جدول باید کدهایی مشابه با کدهای زیر نوشته شود
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,
SignaturePath = signatureName,
PhoneNumber = model.PhoneNumber
};
همانطوری که در کدهای بالا مشاهده می کنید باید تک تک فیلدها مقداردهی شود. یعنی هر مقداری که در Model از سمت View ارسال شده است باید در فیلد متناظر در جدول User مقداردهی شود.
این کار باعث طولانی شدن کدنویسی می شود و احتمال اشتباه را بالا می برد. به همین خاطر ما میتونیم از Automapper در Asp.net core استفاده کنیم.
برای استفاده از قابلیت 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 و جدول خودتون رو مقدار دهی کنید
var userMapped = _mapper.Map<Users>(model)
در اینجا مقدار متغیر model همان UserViewModel می باشد.
تاریخ :
1403/08/29
- ساعت :
07:15:00 PM
- بازدید :
56
- پاسخ :
0
|
تاریخ :
1403/08/18
- ساعت :
10:40:00 AM
- بازدید :
96
- پاسخ :
0
|
تاریخ :
1402/07/23
- ساعت :
04:01:00 PM
- بازدید :
1031
- پاسخ :
1
|
تاریخ :
1403/05/30
- ساعت :
09:22:00 AM
- بازدید :
426
- پاسخ :
1
|
تاریخ :
1402/08/16
- ساعت :
10:38:00 AM
- بازدید :
1347
- پاسخ :
1
|
تاریخ :
1398/08/17
- ساعت :
01:27:00 AM
- بازدید :
4796
- پاسخ :
1
|
تاریخ :
1403/07/27
- ساعت :
03:21:00 PM
- بازدید :
205
- پاسخ :
1
|
تاریخ :
1403/07/26
- ساعت :
09:00:00 PM
- بازدید :
116
- پاسخ :
0
|
تاریخ :
1403/05/16
- ساعت :
09:57:00 AM
- بازدید :
395
- پاسخ :
2
|
تاریخ :
1403/06/25
- ساعت :
11:39:00 PM
- بازدید :
561
- پاسخ :
1
|
تاریخ :
1403/08/29
- ساعت :
07:15:00 PM
- بازدید :
56
- پاسخ :
0
|
تاریخ :
1403/08/18
- ساعت :
10:40:00 AM
- بازدید :
96
- پاسخ :
0
|
تاریخ :
1402/07/23
- ساعت :
04:01:00 PM
- بازدید :
1031
- پاسخ :
1
|
تاریخ :
1403/05/30
- ساعت :
09:22:00 AM
- بازدید :
426
- پاسخ :
1
|
تاریخ :
1402/08/01
- ساعت :
06:25:00 PM
- بازدید :
930
- پاسخ :
1
|
تاریخ :
1402/08/16
- ساعت :
10:38:00 AM
- بازدید :
1347
- پاسخ :
1
|
تاریخ :
1398/08/17
- ساعت :
01:27:00 AM
- بازدید :
4796
- پاسخ :
1
|
تاریخ :
1402/09/08
- ساعت :
07:34:00 PM
- بازدید :
1157
- پاسخ :
1
|
تاریخ :
1402/09/21
- ساعت :
11:10:00 PM
- بازدید :
595
- پاسخ :
1
|
تاریخ :
1403/07/27
- ساعت :
03:21:00 PM
- بازدید :
205
- پاسخ :
1
|