学习AutoMapper(一):映射模型

本文介绍了如何在.NET7.0WebAPI项目中使用AutoMapper进行模型映射,包括安装扩展包、配置AutoMapperProfile文件、注入服务以及在控制器中实现映射示例。作者展示了如何将User模型中的Role.Name映射到UserDto的RoleName属性。
摘要由CSDN通过智能技术生成

学习AutoMapper(一):映射模型



前言

1、我使用的是 .net 7.0 WebAPI,以下代码是在Controllers里面实现。
2、图一是我数据库的数据,自己可创建Model模拟数据,图一role必须要有name,图二必须要有roleName
3、目的是为了做 model 模型的映射,图二不想要那么多模型,只想拿取图一role里面的name值,映射到图二roleName

在这里插入图片描述


一、安装包

此扩展用于ASP.NET Core程序

注:网上还有AutoMapper包 ,但它用于非ASP.NET Core程序,下载下面的即可

AutoMapper.Extensions.Microsoft.Dependencylnjection


二、配置

1.创建文件 AutoMapperProfile

AutoMapperProfile.cs:

/// <summary>
/// 自动映射模型类
/// </summary>
public class AutoMapperProfile : Profile
{
    public AutoMapperProfile()
    {
        //数据源,目标源.         
		CreateMap<User, UserDto>()
			.ForMember(x=>x.RoleName, b => b.MapFrom(x=>x.Role.Name)) //定制规则:映射目标成员
			.ReverseMap();//表示双向映射
		
    }
}

2.注入服务

Program.cs:在builder.Services那块写入就行,懂得都懂~
有两种写法,自己选一种即可

// 添加服务:
builder.Services.AddAutoMapper(typeof(AutoMapperProfile));//第一种:指定文件
//builder.Services.AddAutoMapper(AppDomain.CurrentDomain.GetAssemblies());//第二种:在当前作用域的所有程序集里面扫描AutoMapper的配置文件

3.实现

1、创建UserDto.cs模型类

public class UserDto
{
    /// <summary>
    /// 用户名
    /// </summary>
    public string UserName { get; set; }
    /// <summary>
    /// 角色(权限)名
    /// </summary>
    public string RoleName { get; set; }
}

2、控制器 HomeController 写入:
ApiResponse类是我封装外围的model数据,只要 Role.Name 的数据对应上 RoleName 就行了,可以看一下上面 AutoMapperProfile文件

private readonly IMapper mapper;
public HomeController(IMapper mapper)
{
    this.mapper = mapper;
}

[HttpGet]
public UserDto Index2()
{
    #region 模拟数据
    UserRole role = new UserRole();
    role.Id = 1;
    role.Name = "管理员";

    User user = new User();
    user.Account = "admin";
    user.UserName = "老六的网管";
    //user.RoleId = 1;(RoleId是我其他数据需要,这里可省略)
    user.Role = role;
    #endregion

    UserDto model = mapper.Map<UserDto>(user);
	return model;

	//var resp = new ApiResponse(true, model);
	//return resp;
}

三、效果图

在这里插入图片描述


总结

若有什么问题或不解,欢迎提出!

点点关注,让作者有更多的动力创作更多的文章~

  • 14
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值