文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

ASP.NET Core Web中使用AutoMapper进行对象映射

2024-11-29 22:29

关注

使用对象映射库有哪些好处?

AutoMapper对象映射库介绍

AutoMapper是一个简单易用的.NET对象映射库,用于快速、方便地进行对象之间的转换和映射,极大的简化了开发人员在处理对象映射时的工作量。

安装AutoMapper NuGet包

在ASP.NET Core Web API项目中搜索:AutoMapper NuGet包安装。

图片

创建源对象和目标对象

接下来我们分别定义一个源对象(Student)和一个目标对象(StudentViewModel)。

Student(源对象)

public class Student
    {
        /// 
        /// 学生ID [主键,自动递增]
        /// 
        [PrimaryKey, AutoIncrement]
        [Display(Name = "学生ID")]
        public int StudentID { get; set; }

        /// 
        /// 班级ID
        /// 
        [Display(Name = "班级ID")]
        public int ClassID { get; set; }

        /// 
        /// 学生姓名
        /// 
        [Display(Name = "学生姓名")]
        public string Name { get; set; }

        /// 
        /// 学生年龄
        /// 
        [Display(Name = "学生年龄")]
        public int Age { get; set; }

        /// 
        /// 学生性别
        /// 
        [Display(Name = "学生性别")]
        public string Gender { get; set; }
    }

StudentViewModel(目标对象)

public class StudentViewModel
    {
        /// 
        /// 学生ID [主键,自动递增]
        /// 
        [PrimaryKey, AutoIncrement]
        [Display(Name = "学生ID")]
        public int StudentID { get; set; }

        /// 
        /// 班级ID
        /// 
        [Display(Name = "班级ID")]
        public int ClassID { get; set; }

        /// 
        /// 学生姓名
        /// 
        [Display(Name = "学生姓名")]
        public string Name { get; set; }

        /// 
        /// 学生年龄
        /// 
        [Display(Name = "学生年龄")]
        public int Age { get; set; }

        /// 
        /// 学生性别
        /// 
        [Display(Name = "学生性别")]
        public string Gender { get; set; }

        /// 
        /// 班级名称
        /// 
        [Display(Name = "班级名称")]
        public string ClassName { get; set; }
    }

配置AutoMapper映射规则

我们可以定义一个AutoMapperMappingProfile的映射配置文件,并在其中定义源类型和目标类型之间的映射关系。

using AutoMapper;
using Entity;
using Entity.ViewModel;

namespace WebApi
{
    /// 
    /// AutoMapper映射配置文件
    /// 
    public class AutoMapperMappingProfile : Profile
    {
        /// 
        /// 添加映射规则
        /// 
        public AutoMapperMappingProfile()
        {
            CreateMap();
        }
    }
}

Program中注册AutoMapper服务

使用AddAutoMapper()方法可以将AutoMapper所需的服务添加到该集合中,以便在应用程序的其他部分中使用。该方法需要传入一个Assembly数组,以告诉AutoMapper要扫描哪些程序集来查找映射配置(在当前作用域的所有程序集里面扫描AutoMapper的配置文件)。

public static void Main(string[] args)
        {
            var builder = WebApplication.CreateBuilder(args);

            builder.Services.AddControllers();

            //添加 AutoMapper 的配置
            //使用AddAutoMapper()方法可以将AutoMapper所需的服务添加到该集合中,以便在应用程序的其他部分中使用。
            //该方法需要传入一个Assembly数组,以告诉AutoMapper要扫描哪些程序集来查找映射配置(在当前作用域的所有程序集里面扫描AutoMapper的配置文件)。
            builder.Services.AddAutoMapper(AppDomain.CurrentDomain.GetAssemblies());

        }

进行对象映射操作

依赖注入获取IMapper接口的实例

/// 
    /// 学生管理
    /// 
    [ApiController]
    [Route("api/[controller]/[action]")]
    public class StudentController : ControllerBase
    {
        private readonly IMapper _mapper;

        /// 
        /// 依赖注入
        /// 
        /// mapper
        public StudentController(IMapper mapper)
        {
            _mapper = mapper;
        }
    }

进行对象映射操作

接下来我们使用使用IMapper接口的Map方法来进行对象映射操作。

var studentsListDto = _mapper.Map>(students);

映射结果输出

图片

完整示例源代码

图片

来源:追逐时光者内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯