ASP.NET Core: Getting Started with AutoMapper in ASP.NET Core via Dependency Injection
By FoxLearn 4/1/2020 9:30:34 PM 4.75K
AutoMapper is an object-object mapper that helps you map between two objects. Object-object mapping works by transforming an input object of one type into an output object of a different type.
AutoMapper uses a fluent configuration API to define an object-object mapping strategy. It's a popular object-to-object mapping library that can be used to map objects belonging to dissimilar types.
AutoMapper C# Net Core
After you finish creating an ASP.NET Core project, you need to right-click on your project, then select Manage Nuget Packages from your Visual Studio.
You need to search and install "AutoMapper.Extensions.Microsoft.DependencyInjection"
Opening your Startup class, then add a configuration as shown below.
//asp.net core 3 automapper services.AddAutoMapper(typeof(Startup));
Creating a User class as shown below.
public class User { public Guid Id { get; set; } public string UserName { get; set; } public string Email { get; set; } public string Phone { get; set; } public string Address { get; set; } }
Next, Create a UserViewModel class to map data between Model and View as shown below.
public class UserViewModel { public Guid Id { get; set; } public string UserName { get; set; } public string Email { get; set; } public string Phone { get; set; } public string Address { get; set; } public List<Role> Roles { get; set; } } public class Role { }
Creating an AutoMapping inheritance from the Profile class to register a mapping relation.
using AutoMapper; //automapper .net core example public class AutoMapping : Profile { public AutoMapping() { CreateMap<User, UserViewModel>(); } }
Creating a UserController, then map User to UserViewModel class as shown below.
using AutoMapper; //c# asp.net core automapper public class UserController : Controller { private readonly IMapper _mapper; private readonly IDataRepository _dataRepository; public UserController(IMapper mapper, DataRepository dataRepository) { _mapper = mapper; _dataRepository = dataRepository; } public IActionResult GetUser() { User user = _dataRepository.GetUser(1); var model = _mapper.Map<UserViewModel>(user); return View(model); } }
As you can see, AutoMapper is a simple little library built to solve the complex problem of removing code mapping an object to another.