خرید بک لینک

AutoMapper کتابخانه ای ساده و سبک برای نگاشت اطلاعات یک شی به شی دیگر به صورت خودکار هست و...
فرض کنید Model ما

public class User
{
public int Id { get; set; }

public string FirstName { get; set; }

public string LastName { get; set; }

public string UserName { get; set; }

public string Password { get; set; }

public bool IsAdmin { get; set; }

public virtual ICollection<BlogPost> BlogPosts { get; set; }
}

و ViewModel ما

public class UserViewModel
{
public string FirstName { get; set; }

public string LastName { get; set; }

public string Password { get; set; }
}

باشه(توجه کنید در واقع من برای View ی مورد نظرم فقط به نام , نام خانوادگی و پسورد نیاز دارم)
برای استفاده UserViewModel بعنوان Model در View ی مورد نظر باید شی UserViewModel رو با اطلاعات شی User مقدار دهی کنیم مثلا با کدی مثل این در کنترلر.

public ActionResult Index(int id = 1)
{
var user = _userService.GetById(id);
var userViewModel = new UserViewModel
{
FirstName = user.FirstName,
LastName = user.LastName,
Password = user.Password
};

return View(userViewModel);
}

رهایی از نوشتن اینجور کدهای تکراری و خسته کننده باعث پیدایش AutoMapper شد...
برای استفاده از AutoMapper از نوگت استفاده میکنیم.

آدرس نوگت


PM > Install-Package AutoMapper

و
آدرس نوگت

PM > Install-Package AutoMapper.Extensions.Microsoft.DependencyInjectio n -Version 2.0.1

بعد از نصب این دو پکیچ نوبت به فراخوانی Automapper در کلاس Startup برنامه asp core می رسه :


public void ConfigureServices(IServiceCollection services) {

services.AddMvc();
services.AddAutoMapper();
}

حالا نوبت به ساخت کلاسی که این نگاشت ها رو برای ما انجام بده میرسه که در روت پروژه خودتون باید بسازید . به طور مثال من این کلاس رو با عنوان MappingProfile.cs میسازم و از
Profile مشتق می کنم :


public class MappingProfile : Profile {
public MappingProfile() {
// Add as many of these lines as you need to map your objects
CreateMap<User, UserViewModel>();

}
}


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

public class UserController : Controller {

private readonly IMapper _mapper;

public UserController(IMapper mapper) {
_mapper = mapper;
}

public async Task<IActionResult> Edit(string id) {

var user = await _context.Users
.SingleOrDefaultAsync(u => u.Id == id);

var model = _mapper.Map<User, UserViewModel>(user);

}
}


همنطور که میبنید با نوشتن چندین خط کد عملیات نگاشت اطلاعات یک شی به شی دیگه انجام شد.

برچسب: نویسنده: محمد رضا جوادیان تاريخ: پنجشنبه 5 مرداد 1396 ساعت: 13:42

صفحه بندی