AutoMapper的使用在NET core中的使用记录

关于AutoMapper的用处以及主要便利指出请参考官方文档,本文章仅记录自己使用的过程及代码;

安装

在项目中涉及到的类包括:Account,AccountCondition,AutoMapperConfig

代码如下:

复制代码
 public class Account
    {
        [Column(Name = "id", IsKey = true)]
        public int Id { get; set; }
        [Column(Name = "user_name")]
        public string Name { get; set; }
        [Column(Name = "user_email")]
        public string Email { get; set; }
        [Column(Name = "pass_word")]
        public string PassWord { get; set; }
        [Column(Name = "address")]
        public string Address { get; set; }
        [Column(Name = "phone_no")]
        public string Phone { get; set; }
        [Column(Name="Imageurl")]
        public string ImagerUrl { get; set; }
        [Column(Name = "wechat_id")]
        public string WechatId{get;set;}
    }
复制代码
复制代码
1 public class AccountCondition
2     {
3         public string Email { get; set; }
4         public string Name { get; set; }
5         public int PageSize { get; set; } = 5;
6         public int PageNum { get; set; } = 1;
7         public int Offset { get; set; }
8         public bool NeedPager { get; set; }
9     }
View Code
复制代码

 

复制代码
1   public class AutoMapperConfig:Profile
2     {
3         public AutoMapperConfig()
4         {
5             CreateMap<Account, AccountCondition>()
6                 .ForMember(d => d.Email, option => option.MapFrom(s => s.Name))
7                 .ForMember(d => d.Name, option => option.MapFrom(s => s.Email));
8         }
9     }
View Code
复制代码

在startup中的 ConfigureServices方法中 中添加如下代码:

' services.AddAutoMapper(cfg=>cfg.AddProfile<AutoMapperConfig>());

无需做其他配置;

在controller 中配置如下:

复制代码
 [Route("api/[controller]")]
    public class AccountController : BaseController
    {
        IAccountService _accountService;
        IMapper _mapper;

        //private IHostingEnvironment _hostingEnvironment;
        //private readonly IConfiguration _config;
        public AccountController(IAccountService accountService, IMapper mapper,
            IHostingEnvironment hostingEnvironment, IConfiguration config) : base(hostingEnvironment, config)
        {
            _accountService =accountService;
            _mapper = mapper;
        }

        [Route("test")]
        [HttpGet]
        public IActionResult Test()
        {
            var account = new Account()
            {
                Active = "Y",
                Name = "ken",
                Email = "1234@123.com",
            };
            var result = _mapper.Map<AccountCondition>(account);
            return Ok(result);
        }
}
View Code
复制代码

 其中使用的对象映射如: var result = _mapper.Map<AccountCondition>(account);

测试结果:如下

{
  "email": "ken",
  "pageSize": 5,
  "pageNum": 1,
  "offset": 0,
  "needPager": false
}

posted @   若水如引  阅读(809)  评论(2编辑  收藏  举报
编辑推荐:
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)
点击右上角即可分享
微信分享提示