学习AutoMapper(一):映射模型

学习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
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
AutoMapper是一个用于对象映射的开源库。它可以帮助简化对象之间的转换过程,减少手动编写重复的代码。通过配置映射规则,AutoMapper可以自动将一个对象的属性值复制到另一个对象中对应的属性上,而不需要手动逐个属性进行赋值。 使用AutoMapper,你可以定义映射规则,包括源类型和目标类型以及它们之间的属性映射关系。一旦配置好映射规则,你可以使用简单的API将源对象映射到目标对象上。 以下是一个使用AutoMapper的示例: ```csharp // 定义源类型和目标类型 public class SourceObject { public string Name { get; set; } public int Age { get; set; } } public class DestinationObject { public string Name { get; set; } public int Age { get; set; } } // 配置映射规则 var config = new MapperConfiguration(cfg => { cfg.CreateMap<SourceObject, DestinationObject>(); }); // 创建映射器 var mapper = config.CreateMapper(); // 创建源对象 var source = new SourceObject { Name = "John", Age = 30 }; // 使用映射器进行对象映射 var destination = mapper.Map<SourceObject, DestinationObject>(source); // 输出目标对象属性值 Console.WriteLine(destination.Name); // 输出:John Console.WriteLine(destination.Age); // 输出:30 ``` 通过使用AutoMapper,你可以简化对象之间的映射过程,提高开发效率。它支持各种复杂的映射场景,并且可以通过自定义转换器来处理更复杂的映射逻辑。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值