AutoMapper es una biblioteca pequeña y simple que resuelve un problema aparentemente complejo: deshacerse de mapear manualmente un objeto a otro. Este tipo de código de asignación de propiedades es repetitivo y aburrido; AutoMapper es la herramienta que automatiza el mapeo de objetos.
Mapeador objeto a objeto: Convierte un objeto de entrada de un tipo en un objeto de salida de otro tipo.
AutoMapper tiene integrado un conjunto de reglas de convención. Siempre que la clase de destino siga las convenciones de nomenclatura, el mapeo entre dos tipos se puede completar con casi ninguna configuración.
Escribir código de mapeo a mano es tedioso, y probarlo lo es aún más. AutoMapper proporciona una configuración de tipo simple y también admite pruebas unitarias de la lógica de mapeo.
Instalación
Instalar a través de la Consola del Administrador de Paquetes NuGet
PM> Install-Package AutoMapper
Paquetes de extensión complementarios
- AutoMapper.Data: Soporte para ADO.NET, permite mapear desde
IDataReader - AutoMapper.EF6: Métodos de extensión para EF6, proporciona proyección asíncrona
ProjectTo - AutoMapper.Collection: Mapeo de equivalencia de colecciones, admite comparar dos colecciones y realizar comparación de igualdad de objetos
- AutoMapper.Collection.EF: Combina con claves primarias de EF para juzgar igualdad, maneja automáticamente agregar/modificar/eliminar de colecciones, logrando operaciones de persistencia de colecciones DTO a colecciones de entidades de base de datos
Ejemplo tradicional de asignación manual de objetos
Dos clases People (origen) y Person (destino) con exactamente los mismos nombres de propiedad
class People
{
public int Age { set; get; }
public string Name { set; get; }
}
class Person
{
public int Age { set; get; }
public string Name { set; get; }
}Lenguaje del código: JavaScript (javascript)
Enfoque tradicional: asignar manualmente cada propiedad una por una:
static void Main(string[] args)
{
People p = new People() { Age = 13, Name = "Jack" };
Person person = new Person();
// Copiar manualmente cada propiedad; cuando hay muchas propiedades, el código se vuelve muy verboso
person.Name = p.Name;
person.Age = p.Age;
Console.WriteLine(person.Name);
Console.WriteLine(person.Age);
Console.ReadKey();
}Lenguaje del código: JavaScript (javascript)
Desventajas: Cuantas más propiedades haya, más código repetitivo de asignación; al agregar/modificar campos, todo el código de asignación debe actualizarse en consecuencia, y es fácil pasar por alto algo e introducir errores.
Lo que hace AutoMapper: Reemplaza escribir manualmente un montón de instrucciones
xxx.Propiedad = yyy.Propiedad, copiando automáticamente las propiedades con el mismo nombre según las convenciones.
Qué es AutoMapper