AutoMapper 是一款专为 .NET 开发者设计的对象映射工具,旨在减少在不同对象模型之间进行数据转换时所需的代码量。其官方网站和项目托管地址为:https://github.com/AutoMapper/AutoMapper。
官方文档提供了详细的使用指南和技术支持,访问地址为:https://docs.automapper.org/
主要功能
- 实现领域对象与数据传输对象(DTO)之间的自动转换
- 支持从数据库查询结果直接映射到实体对象
- 提供灵活的映射配置选项,满足各种复杂的数据转换需求
使用示例
示例1:将源类型 BlogEntry 映射到目标类型 BlogPostDto,并指定特定属性的映射规则(如 BlogEntry.ID 映射到 BlogPostDto.PostId)。
AutoMapper.Mapper.CreateMap().ForMember(dto => dto.PostId, opt => opt.MapFrom(entity => entity.ID));
示例2:将 IDataReader 中的数据映射到实体类 BlogConfig。
using (IDataReader reader = _db.ExecuteReader(command)) { if (reader.Read()) { return AutoMapper.Mapper.DynamicMap(reader); } }
示例3:实现列表类型之间的映射,例如将 List
AutoMapper.Mapper.CreateMap(); var blogSiteDto = AutoMapper.Mapper.Map , List
>(blogSite);
注意:在执行映射操作前,必须先通过 CreateMap 方法定义好 BlogSite 与 BlogSiteDto 之间的映射关系。
示例4:在映射过程中为特定属性设置固定值。
var blogSiteDto = new BlogSiteDto(); AutoMapper.Mapper.CreateMap().ForMember(dto => dto.BlogSiteDto, opt => opt.UseValue(blogSiteDto));
注意:此处 BlogSiteDto 是 BlogPostDto 的一个属性。
最佳实践
为了确保应用程序的性能和可维护性,建议在应用启动阶段完成所有必要的 AutoMapper 配置。例如,可以在 ASP.NET 应用的 Global.asax 文件中的 Application_Start 方法或通过依赖注入框架的 Bootstrapper 进行配置。