AutoMapper对象映射器

蔚落 2024-03-27 15:36 223阅读 0赞

基于约定的对象-对象映射器。消除将一个对象映射到另一个对象的所有麻烦。

官网:http://automapper.org/文档:https://automapper.readthedocs.io/en/latest/index.html

一、什么是 AutoMapper?


AutoMapper 是一个简单的小库,旨在解决一个看似复杂的问题——摆脱将一个对象映射到另一个对象的代码。这种类型的代码写起来相当枯燥乏味,那么为什么不发明一个工具来为我们做呢?

映射可以出现在应用程序的许多地方,但主要是在层之间的边界,例如 UI/Domain 层或 Service/Domain 层之间。一层的关注点经常与另一层的关注点发生冲突,因此对象-对象映射导致分离模型,其中每一层的关注点只能影响该层中的类型。

二、使用


1、Nuget安装

安装这两个

  1. install-package AutoMapper
  2. install-package AutoMapper.Extensions.Microsoft.DependencyInjection

01359b4d246de8d08fe7c267989dd26f.png

2、创建一个文件夹来配置映射关系

f5520990df6cb0c84cfa21216f643a9b.png

这是全部的文件夹

5fefe1f5fe201f8ffe47c6681f224180.png

3、 添加继承 Profile 的映射关系类 AutoMapper

  1. xxxxxxxxxx public class AutoMapperConfig : Profile { /// <summary> /// 在构造函数中配置映射关系 /// </summary> public AutoMapperConfig() { CreateMap<Users, UsersRes>(); CreateMap<Roles, RolesRes>(); } }

这里是把Users对象映射成到usersRes对象

4、注册服务 在program类中注册

  1. builder.Services.AddAutoMapper(typeof(AutoMapperConfig));

69f0393dd76ad079dbb7d09e9e8106ff.png

5、通过注入IMapper 消费

  1. public class UsersServiceImp : UsersService
  2. {
  3. private readonly IMapper _mapper;
  4. //构造函数依赖注入
  5. public UsersServiceImp(IMapper mapper)
  6. {
  7. _mapper = mapper;
  8. }
  9. public List<UsersRes> GetUsers(UsersReq req)
  10. {
  11. var res = RoleTestContext.db.Queryable<Users>().Where(x => x.UId == req.UId || x.UName == req.UName).ToList();
  12. //转化
  13. return _mapper.Map<List<UsersRes>>(res);
  14. }
  15. ....
  16. }

发表评论

表情:
评论列表 (有 0 条评论,223人围观)

还没有评论,来说两句吧...

相关阅读

    相关 AutoMapper对象映射

    基于约定的对象-对象映射器。消除将一个对象映射到另一个对象的所有麻烦。 官网:[http://automapper.org/][http_automapper.org]文档:

    相关 mybatis 映射

    mybatis 映射器 1 映射器 Mapper 是由java接口和 XML 文件共同组成。它的作用如下 1)定义参数类型 2)描述缓存 3)描述 SQL 语句 4