Ir al contenido principal

Automapper para nuestra arquitectura limpia

El modelo de MVC que tenemos en una aplicación ASP.NET Core nos dice que podemos utilizar un modelo en nuestra vista y así mostrar los datos que ahí se encuentran.

Lo más lógico es utilizar el objeto del dominio en la vista, sin embargo, la buena práctica te dice que ya en producción NUNCA utilices un objeto del dominio sino que utilices objetos que tienen estrictamente los atributos que vas a usar en tu vista. De esta manera la persona que está haciendo el front-end no tiene ninguna tentación de dejar algunos campos 'por si acaso' en elementos tipo hidden en la página.

Y es siguiendo la buena práctica que nos enfrentamos a nuestro problema:


   EmpresaViewModel evm = new EmpresaViewModel();
   evm.Nombre = e.Nombre;
   evm.Correo = e.Correo;
   ...

Tenemos que mapear los campos de nuestro objeto de dominio a los campos de nuestro ViewModel.

Aquí es donde nos rescata AutoMapper.

1. Usar los paquetes Automapper y Automapper injection para que los incorporemos a nuestra solución


2. Indicar la inyección de dependencia necesaria:

   services.AddAutoMapper(Assembly.GetExecutingAssembly());
3. Crear el perfil que se va a usar para el mapeo:

    public class EmpresaProfile : Profile {
        public EmpresaProfile() {
            CreateMap<Empresa, EmpresaViewModel>();
        }
    }

4. Utilizar el mapeo en nuestros controllers para que podamos obtener finalmente los objetos de tipo ViewModel que necesitamos:


EmpresaViewModel> model = new List<EmpresaViewModel>();
foreach(Empresa objEmpresa in empresas.ResultList)
  model.Add(_mapper.Map<EmpresaViewModel>(objEmpresa));
}

Y con eso tenemos todo lo necesario para poder mapear nuestros objetos en una sola linea de código.

Comentarios

Entradas más populares de este blog

Hangfire, si no lo estás usando, estás haciendo algo mal (.NET world)

Hangfire es una librería espectacular que permite encolar tareas en un servidor de tareas que funciona dentro de tu aplicación web. Existen varios tutoriales que muestran de manera bastante sencilla cómo puedes ir integrando esto a tu aplicación. En esta publicación vamos a repetir, pero en español, y sobretodo vamos a tratar de ir lo más al punto posible. Qué es? Es una librería que la cargas a través de NUGET como cualquier otra librería. En realidad tenemos que cargar 3 librerías pero eso lo veremos más adelante. Una vez que hayas cargado todo lo necesario en tu aplicación web tendrás lo siguiente: Un servidor de colas : es decir, un lugar al cual le puedes mandar hacer cosas y no se olvida de esas cosas y las va ejecutando a medida que puede o tiene tiempo. Esto es muy útil para que tu aplicación no pierda tiempo haciendo algo que no necesita realmente hacer en ese instante y devolver más rápido al usuario final. Un tablero de control de colas : una serie de ...

El contagio top-bottom

 Charlábamos en una reunión bastante informal el tema de que el equipo de fútbol de Bolivia era un fiel reflejo de la sociedad boliviana actual y que sus resultados están acorde con esta realidad. Y nos pusimos a reflexionar. Qué importante es que la cabeza, las instituciones, los grupos de poder, las empresas, ... funcionen de manera correcta. No es una regla pero el individuo se suele dejar llevar por lo que impulsa el grupo social donde está: En la familia se comporta como se comportan la mayor parte de los familiares En el trabajo se comporta como se comportan la mayor parte de los colegas En una tienda se comporta como se comportan la mayor parte de los clientes En un juicio se comporta como se comportan la mayor parte de los juzgados En el congreso del país se comporta como se comportan la mayor parte de los diputados etc... De nuevo, no es una regla, pero indefectiblemente la mayoría logra arrastrar a un porcentaje importante de cada uno de los que participa de un grupo. En ...

Reflexiones con Pareto

Nada como temprano en la mañana con 10 estudiantes para aprovechar de hacer algunas reflexiones. Hoy quiero compartir una que andaba rondando mi cabeza hace algunos años ya... y al final con los estudiantes salio algo en concreto. Para todo efecto, programador principiante y estudiante se utilizan para indicar lo mismo en este texto. Contexto Los estudiantes presentaron un práctico de programación relativamente complejo implementando el algoritmo de Dijkstra para encontrar el camino entre dos nodos de un grafo. El ambiente era, por supuesto, de caras largas, desvelados y con algo de frustración en lo poco de impulso que les quedaba. Todo esto a pesar de haber tenido varios días feriados y suficiente tiempo para preparar esto. Entiendo que es algo que un estudiante hace e hizo desde siempre... en toda latitud, pero con ligeros cambios (ya lo veremos) Pareto Luego de la revisión comenzamos leyendo lo que indica este principio en wikipedia: Así por ejemplo cuando hablamos de...