سلام. لطفا یک نمونه مثال از صفر تا 100 برای استفاده از 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 ها استفاده کنید.
مرحله اول
در مرحله اول باید پکیج زیر رو به پروژه از طریق 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()
ننوشتم ولی کار میکنه. فرقش چیه؟
تاریخ :
1403/08/29
- ساعت :
07:15:00 PM
- بازدید :
54
- پاسخ :
0
|
تاریخ :
1403/08/18
- ساعت :
10:40:00 AM
- بازدید :
93
- پاسخ :
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
- بازدید :
394
- پاسخ :
2
|
تاریخ :
1403/06/25
- ساعت :
11:39:00 PM
- بازدید :
561
- پاسخ :
1
|
تاریخ :
1403/08/29
- ساعت :
07:15:00 PM
- بازدید :
54
- پاسخ :
0
|
تاریخ :
1403/08/18
- ساعت :
10:40:00 AM
- بازدید :
93
- پاسخ :
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
|