Integrar o AutoMapper ao seu projeto ASP.NET Core pode simplificar significativamente seus mapeamentos de objeto para objeto, tornando seu código mais limpo e fácil de manter. O AutoMapper é uma biblioteca poderosa projetada para mapear automaticamente propriedades entre diferentes objetos, reduzindo a quantidade de código de mapeamento manual que você precisa escrever. Neste guia, mostraremos as etapas para configurar o AutoMapper em uma aplicação ASP.NET Core, desde a instalação até a configuração e o uso.
Instalando dependências do AutoMapper
A jornada começa adicionando o AutoMapper e suas extensões ASP.NET Core ao seu projeto. Isso pode ser feito facilmente por meio do Gerenciador de Pacotes NuGet ou do Console do Gerenciador de Pacotes com o seguinte comando:
Install-Package AutoMapper.Extensions.Microsoft.DependencyInjection
Este comando não apenas instala o AutoMapper, mas também suas extensões necessárias para uma integração perfeita com o sistema de injeção de dependência do ASP.NET Core.
Criando Perfis de Mapeamento
Os perfis de mapeamento são o cerne da funcionalidade do AutoMapper. São classes onde você define os tipos de origem e destino para seus mapeamentos. Crie um perfil herdando do Profile
classe e definindo seus mapeamentos no construtor.
Crie as duas classes User e UserDto
Após configurar a classe UserProfile
Veja como:
using AutoMapper;
public class UserProfile : Profile
{
public UserProfile()
{
CreateMap<User, UserDto>();
// Feel free to add more mappings here
}
}
Configurando o AutoMapper em Startup.cs
Assim que seus perfis de mapeamento estiverem prontos, é hora de configurar o AutoMapper em seu aplicativo. Isso é feito no Startup.cs
arquivo, dentro do ConfigureServices
método. Aqui está o trecho de código para fazer exatamente isso:
public void ConfigureServices(IServiceCollection services) { services.AddAutoMapper(typeof(Startup)); // This works if your profiles are in the same assembly as Startup.cs // Alternatively, specify assemblies explicitly
// serviços.AddAutoMapper(typeof(UserProfile).Assembly); // Não se esqueça de adicionar serviços de frameworks e quaisquer outros serviços que você possa precisar serviços.AddControllersWithViews(); }
ou em Program.cs
construtor.Services.AddAutoMapper(tipo de(Programa));
// Isso funciona se seus perfis estiverem no mesmo assembly que Startup.cs
// Alternativamente, especifique os assemblies explicitamente
// serviços.AddAutoMapper(typeof(UserProfile).Assembly);
Utilizando o AutoMapper
Com o AutoMapper configurado, agora você pode injetar o IMapper
interface com controladores ou serviços para realizar mapeamentos de objetos. Abaixo está um exemplo de como usar o AutoMapper em um controlador:
using AutoMapper;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using WebApplicationAutomapper.Models;
namespace WebApplicationAutomapper.Controllers
{
public class UsersController : ControllerBase
{
privado somente leitura IMapper _mapper;
Controlador de Usuários público (mapeador IMapper)
{
_mapper = mapeador;
}
público IActionResult GetUserInfo(int userId)
{
Usuário user = GetUserFromDatabase(userId); // Supondo que isso recupere a entidade Usuário
UserDto userDto = _mapper.Map<UserDto>(usuário);
retornar Ok(userDto);
}
Usuário privado GetUserFromDatabase(int userId)
{
lançar nova NotImplementedException();
}
}
}
Testando sua configuração
A etapa final é garantir que a configuração do AutoMapper funcione conforme o esperado. Teste seus endpoints ou serviços que utilizam o AutoMapper para verificar os mapeamentos corretos. É crucial garantir que todas as propriedades estejam mapeadas com precisão e que nenhum dado esteja faltando ou tenha sido transformado incorretamente.
Você pode encontrar todo o código deste repositório no GitHub:
https://github.com/icpmtech/NLayer-Architecture/tree/master/WebApplicationAutomapper
Seguindo estes passos, você integrará o AutoMapper ao seu projeto ASP.NET Core com eficiência. O AutoMapper não só reduz a quantidade de código boilerplate, como também minimiza erros de mapeamento, permitindo que você se concentre na funcionalidade principal do seu aplicativo. Boa programação!