Configurar Profile

Propósito de Profile: Extraer una gran cantidad de reglas de mapeo en una clase independiente, en lugar de amontonarlas todas en el método Main, lo que facilita gestionar los mapeos de múltiples entidades.

1. Clase Profile personalizada

Hereda del Profile que proporciona AutoMapper, escribe las relaciones de mapeo en el constructor y puedes escribir múltiples CreateMap de una vez.

using AutoMapper;

/// <summary>
/// Clase de configuración de mapeo
/// </summary>
public class MappingProfile : Profile
{
    public MappingProfile()
    {
        // Person → People
        CreateMap<Person, People>();
        // People → Person, mapeo bidireccional
        CreateMap<People, Person>();
    }
}
// [Traducción del chino en el bloque de código]
// Clase de configuración de mapeo
// Person → People
// Mapeo bidireccional
Lenguaje del código: HTML, XML (xml)

Método 1: Agregar Profile durante la inicialización

Mapper.Initialize(x => x.AddProfile<MappingProfile>());
Lenguaje del código: JavaScript (javascript)

Método 2: Sintaxis completa, instanciar objeto Profile

var mc = new MapperConfigurationExpression();
mc.AddProfile(new MappingProfile());
Mapper.Initialize(mc);
// [Traducción del chino en el bloque de código]
// Instanciar objeto Profile
Lenguaje del código: JavaScript (javascript)

2. Cargar múltiples Profiles

Cuando el proyecto se vuelve complejo, se dividen los mapeos en varias clases Profile. Puedes registrarlos todos de una vez:

Mapper.Initialize(x =>
{
    x.AddProfile<MappingProfile>();
    x.AddProfile<MappingProfile2>();
});
Lenguaje del código: HTML, XML (xml)

Ejemplo completo de Program

class Program
{
    static void Main(string[] args)
    {
        // ========= Configuración: cargar mapeo Profile =========
        Mapper.Initialize(x => x.AddProfile<MappingProfile>());

        // Objeto fuente, objeto destino
        Person p = new Person()
        {
            Age = 12,
            Name = "Tom",
            Birthday = DateTime.Now,
            Sex = true,
            Salary = 10000
        };

        People peo = new People()
        {
            Age = 36,
            Name = "Jack",
            Birthday = DateTime.Now,
            Sex = true,
            Salary = 102000
        };

        // Mapeo directo Person → People
        Mapper.Map(p, peo);
        // Mapeo inverso People → Person
        Mapper.Map(peo, p);

        Console.WriteLine(peo.Name);
        Console.WriteLine(p.Name);
        Console.ReadKey();
    }
}
// [Traducción del chino en el bloque de código]
// Configuración: cargar mapeo Profile
// Objeto fuente, objeto destino
// Mapeo directo Person → People
// Mapeo inverso People → Person
Lenguaje del código: JavaScript (javascript)

Configurar Profile

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *