基于约定的对象-对象映射器。消除将一个对象映射到另一个对象的所有麻烦。
官网:http://automapper.org/文档:https://automapper.readthedocs.io/en/latest/index.html
一、什么是 AutoMapper?
AutoMapper 是一个简单的小库,旨在解决一个看似复杂的问题——摆脱将一个对象映射到另一个对象的代码。这种类型的代码写起来相当枯燥乏味,那么为什么不发明一个工具来为我们做呢?
映射可以出现在应用程序的许多地方,但主要是在层之间的边界,例如 UI/Domain 层或 Service/Domain 层之间。一层的关注点经常与另一层的关注点发生冲突,因此对象-对象映射导致分离模型,其中每一层的关注点只能影响该层中的类型。
二、使用
1、Nuget安装
安装这两个
install-package AutoMapper
install-package AutoMapper.Extensions.Microsoft.DependencyInjection

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

这是全部的文件夹

3、 添加继承 Profile 的映射关系类 AutoMapper
xxxxxxxxxx public class AutoMapperConfig : Profile { /// <summary> /// 在构造函数中配置映射关系 /// </summary> public AutoMapperConfig() { CreateMap<Users, UsersRes>(); CreateMap<Roles, RolesRes>(); } }
这里是把Users对象映射成到usersRes对象
4、注册服务 在program类中注册
builder.Services.AddAutoMapper(typeof(AutoMapperConfig));

5、通过注入IMapper 消费
public class UsersServiceImp : UsersService
{
private readonly IMapper _mapper;
//构造函数依赖注入
public UsersServiceImp(IMapper mapper)
{
_mapper = mapper;
}
public List<UsersRes> GetUsers(UsersReq req)
{
var res = RoleTestContext.db.Queryable<Users>().Where(x => x.UId == req.UId || x.UName == req.UName).ToList();
//转化
return _mapper.Map<List<UsersRes>>(res);
}
....
}