.Net Core008 Model和DTOAutoMapper基本使用

Posted RyouJou

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了.Net Core008 Model和DTOAutoMapper基本使用相关的知识,希望对你有一定的参考价值。

文章目录


数据传输模型DTO和数据模型Model

使用数据模型Model的弊处

直接暴露了业务模型的数据
颗粒度太粗

问题思考:使用Model不足的场景?


分离DTO和Model

下载依赖和DTO转换

下载依赖

# 下载依赖
AutoMapper.Extensions.Microsoft.Dependencylnjection

哪些数据是不想暴露给前端呢?哪些数据是需要做转换呢?

Model和DTO转换

创建Dtos文件夹、创建对应的Dto类

public class TouristRouteDto

AutoMapper使用提供DTO数据

AutoMapper 是一个对象-对象映射器,可以将一个对象映射到另一个对象

1.配置好Startup注册服务

 //扫描profile文件【AutoMapper服务】
 services.AddAutoMapper(AppDomain.CurrentDomain.GetAssemblies());

2.创建对应文件

创建Profiles文件夹及对应Profile文件

using AutoMapper;
public class TouristRouteProfile : Profile
    
        //在映射类的构造函数中配置
        public TouristRouteProfile() 

投影和映射
投影就是把多个关系对象,经过一定的转换成为投影的产物

// dest投影的目标对象
// opt投影的原始对象
CreateMap<TouristRoute, TouristRouteDto>()
    .ForMember(
           dest => dest.Price,
           opt => opt.MapFrom(src => src.OriginalPrice * (decimal)(src.DiscountPresent ?? 1))
 )

3.注入到Controller中替换成为DTO数据

/*
固定注入
 */
private ITouristRouteRepository _touristRouteRepository;//私有变量加上下划线
 private readonly IMapper _mapper;

 public TouristRoutesController(ITouristRouteRepository touristRouteRepository,IMapper mapper)//构造
  
            _touristRouteRepository = touristRouteRepository;//转变成私有存入
            _mapper = mapper;
            
 

以上是关于.Net Core008 Model和DTOAutoMapper基本使用的主要内容,如果未能解决你的问题,请参考以下文章

.Net Core008 Model和DTOAutoMapper基本使用

.net core mvc model填充过滤器

在 ASP.NET Core MVC Razor 视图中,与 @model IEnumerable<Namespace.Model> Vs @model<Namespace.Mode

Asp.net Core 6.0 使用EF Model First 连接mysql

Asp.net Core 6.0 使用EF Model First 连接mysql

[七] ASP.NET Core MVC 的设计模式