.NET如何使用AutoMapper进行对象映射

答案:AutoMapper用于.NET中对象映射,通过安装NuGet包、创建Profile配置映射规则,并在ASP.NET Core中注册服务,实现DTO与实体间自动转换,支持属性重命名、忽略、条件映射等高级功能,提升开发效率。

.net如何使用automapper进行对象映射

在 .NET 项目中,AutoMapper 是一个广泛使用的对象映射库,它能自动将一个对象的属性映射到另一个对象,特别适用于 DTO(数据传输对象)与实体模型之间的转换。使用 AutoMapper 可以大幅减少手动赋值代码,提高开发效率。

安装 AutoMapper

在项目中使用 AutoMapper 前,需要通过 NuGet 安装相关包:

Microsoft.EntityFrameworkCore(如果使用 EF Core) AutoMapper AutoMapper.Extensions.Microsoft.DependencyInjection(用于集成 ASP.NET Core 依赖注入)

通过 NuGet 包管理器或命令行安装:

dotnet add package AutoMapper.Extensions.Microsoft.DependencyInjection

配置映射关系

创建一个 Profile 类来定义映射规则。Profile 会自动收集映射配置。

public class MappingProfile : Profile{    public MappingProfile()    {        CreateMap();        CreateMap(); // 双向映射可选    }}

假设你有以下两个类:

public class User{    public int Id { get; set; }    public string Name { get; set; }    public string Email { get; set; }}public class UserDto{    public int Id { get; set; }    public string Name { get; set; }    public string EmailAddress { get; set; } // 属性名不同}

若属性名不一致,可使用 ForMember 显式指定映射:

CreateMap()    .ForMember(dest => dest.EmailAddress, opt => opt.MapFrom(src => src.Email));

在 ASP.NET Core 中注册服务

Program.csStartup.cs 中注册 AutoMapper:

var builder = WebApplication.CreateBuilder(args);// 添加 AutoMapper 服务builder.Services.AddAutoMapper(typeof(MappingProfile)); // 指定包含 Profile 的类型

这样 AutoMapper 会自动扫描并加载所有继承自 Profile 的类。

在控制器或服务中使用 IMapper

通过依赖注入获取 IMapper 实例进行映射:

[ApiController][Route("[controller]")]public class UsersController : ControllerBase{    private readonly IMapper _mapper;    public UsersController(IMapper mapper)    {        _mapper = mapper;    }    [HttpGet("{id}")]    public ActionResult Get(int id)    {        var user = new User { Id = id, Name = "张三", Email = "zhangsan@example.com" };        var dto = _mapper.Map(user);        return Ok(dto);    }}

高级用法示例

AutoMapper 支持多种映射场景:

忽略某些属性: .ForMember(dest => dest.SomeProp, opt => opt.Ignore()) 条件映射: .ForMember(dest => dest.Status, opt => opt.Condition(src => !string.IsNullOrEmpty(src.Status))) 扁平化映射: 自动将嵌套对象展开(如 Address.City → AddressCity) 集合映射: _mapper.Map>(users) 直接映射集合

基本上就这些。只要定义好 Profile 并正确注入,AutoMapper 能处理大多数常见映射需求,让代码更简洁清晰。

以上就是.NET如何使用AutoMapper进行对象映射的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1441279.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年12月17日 17:55:28
下一篇 2025年12月17日 17:55:46

相关推荐

发表回复

登录后才能评论
关注微信