Utilice AutoMapper en asp.net core 3.1.x

Rol de AutoMapper

  • La función de AutoMapper es transformar un objeto en otro objeto, evitando transformar cada vez;
  • Utilice DTO para realizar el desacoplamiento de la capa de presentación y el modelo de dominio, y utilice AutoMapper para realizar la conversión mutua entre DTO y el modelo de dominio;
基于访问性的控制或从模型本身上考虑。对外开放的原则是,尽量降低系统耦合度,否则内部一旦变更外部所有的接口都要跟随发生变更;另外,系统内部的一些数据或方法并不希望外部能看到或调用。类似的考虑很多,只是举个例子。系统设计的原则是高内聚低耦合,尽量依赖抽象而不依赖于具体。这里感觉automapper就是使数据库实体对一个外部调用实体的转换更简便(不用一个属性一个属性的赋值)。

AutoMapper utiliza una API de configuración fluida para definir una estrategia de mapeo objeto-objeto. 
AutoMapper utiliza un algoritmo de coincidencia basado en convenciones para hacer coincidir los valores de origen y destino. 
AutoMapper está orientado a escenarios de proyección de modelos para aplanar modelos de objetos complejos a DTO y otros objetos simples, cuyo diseño es más adecuado para serialización, comunicación, mensajería o simplemente una capa anticorrupción entre el dominio y la capa de aplicación.

AutoMapper admite las siguientes plataformas:
.NET 4.6.1+
.NET Standard 2.0+

Sitio web oficial: http://automapper.org/
Documento: https://automapper.readthedocs.io/en/latest/index.html
GitHub: https://github.com/AutoMapper/AutoMapper/blob/master/docs/ índice .rst

 

¿Qué es DTO?

DTO (Data Transfer Object) es un objeto de transferencia de datos (modelo de anemia), para decirlo sin rodeos, es un objeto, pero son todos datos.

¿Por qué utilizar DTO?

  1. DTO presta más atención a los datos y encapsula razonablemente los objetos de dominio para no exponer excesivamente el comportamiento de los objetos de dominio a la capa de presentación;
  2. DTO está diseñado para las necesidades de la interfaz de usuario, mientras que el modelo de dominio está diseñado para empresas. Por lo tanto, DTO es más adecuado para la interacción con la capa de presentación A través de DTO, nos damos cuenta del desacoplamiento entre la capa de presentación y el modelo de dominio, por lo que cambiar el modelo de dominio no afectará la capa de interfaz de usuario;
  3. Para decirlo claramente, DTO son solo datos y no contiene ninguna lógica comercial. Es un objeto de tipo delgado (también conocido como anemia) y se puede usar de manera flexible de acuerdo con los diferentes requisitos de la interfaz de usuario cuando se usa;

Escenarios de aplicación

  • Modelo de datos de interfaz de servicio externo;
  • Modelo de vista de capa de interfaz de usuario;
  • Modelo parametrizado de entrada y salida del usuario;

¿Cómo aplicar AutoMapper en asp.net core 3.1.x para lograr el mapeo de conversión del modelo?

  • Microsoft Visual Studio Enterprise 2019 版本 16.6.4 ;
  • .net core 3.1.7 ;
  • Nuget Descargar AutoMapper.Extensions.Microsoft.DependencyInjection -Version 8.0.1 Descargar

1. Cree un nuevo proyecto [UseAutoMapperDemo] de la siguiente manera:

2. Utilice Nuget para instalar paquetes dependientes en el proyecto;

Install-Package AutoMapper.Extensions.Microsoft.DependencyInjection -Version 8.0.1

 Transforme el proyecto creado y agregue dos clases de modelo [PersonA y PersonB] a la nueva carpeta [Model] para facilitar las demostraciones posteriores;

2. Crear reglas de mapeo de AutoMapper: Cree una nueva clase [AutoMapperProfile] en la carpeta [Modelo] para configurar las reglas de mapeo del modelo;

3. Agregue AutoMapper en ConfigureServices of Startup:

// This method gets called by the runtime. Use this method to add services to the container.
public void ConfigureServices(IServiceCollection services)
{
    services.AddControllers();
    #region 添加AutoMapper
    services.AddAutoMapper(typeof(AutoMapperProfile));
    #endregion
}

//注意:引入对应的命名空间;
using AutoMapper;
using UseAutoMapperDemo.Model;

4. Inyecte su IMapper en el constructor del controlador:

#region 注册IMapper
private readonly IMapper mapper;
public ValuesController(IMapper mapper)
{
   this.mapper = mapper;
}
#endregion

5. Utilice AutoMapper para realizar la conversión de objetos;

//单对象转化
var personB = mapper.Map<PersonB>(personA);

//List集合对象转化
var personBs = mapper.Map<List<PersonB>>(personAs);

El contenido anterior es el uso básico de AutoMapper en el proyecto api asp.net core 3.1.x. Para más uso, consulte el sitio web oficial;

Descarga del proyecto de demostración: UseAutoMapperDemo.zip

Supongo que te gusta

Origin blog.csdn.net/ChaITSimpleLove/article/details/108019513
Recomendado
Clasificación