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.