.NET 6.0 如何使用对象映射库AutoMapper

发布时间 2023-09-19 11:27:55作者: 初出茅庐子

AutoMapper是一个非常流行的对象到对象映射(Object-to-Object Mapping)库,它可以帮助开发人员简化对象之间的转换工作。在软件开发中,我们经常需要将一个对象的属性值映射到另一个对象的属性上,而手动进行属性复制会显得冗长和重复。AutoMapper通过自动执行对象属性之间的映射,大大简化了这个过程。

通俗来讲就是前后端分离项目的时候,我们拿一个DTO接手前端给的一些值,但这个DTO中包含了两个实体类的所有属性,这时我们就要将这些DTO中的属性分配给对应的实体类中,来完成CRUD的操作, 我们复古的方式就是new出来一个对象然后一一赋值,这样就大大浪费了一些时间,所以我们就要采用AutoMapper来解决这些花费的时间(需要注意的是转换的时候是按照DTO和实体类中统一的属性名进行匹配来转换的),它可以在DTO和实体类之间进行转换,当然也可以在ToList和ToList之间进行转换。

直接上代码

在WebAPI中下载NuGet包

 然后在WebAPI下创建一个实体类继承自Profile,接着写一个构造函数(这个构造函数中主要写的就是一些转换,下面会有详细的使用方法)

其次就是在Program.cs中进行注入

到这一步以后已经就可以正常使用了

接下来是两个个例子

场景:现在有一个UserRoleDTO,这里包含了User实体类中所有的属性,另外包含了Role的Id属性

我们通过AutoMapper将UserRoleDTO中属于User的属性赋值给User

  第一步:在这个构造函数中写出要进行映射的实体类,这里ReverseMap()是反转的意思,这样两个可以互相映射,如果没有写这个那么只能TUser和UserRoleDto进行映射

写好以后就要开始使用了,在我们的控制器或者业务层通过构造函数的方式注入进来

 然后就是使用

 这里做个比较 以上是使用了AutoMapper,以下是没有使用AutoMapper

 这样就可以显而易见的看出两个的效率,假设没有使用AutoMapper的话,就需要花费大量的时间一一赋值

这里呢我们自己测试的时候可以加断点看一下每一行的变化,当然也可以是ToList之间的转换,如下

 这就是使用AutoMapper的基本使用