AutoMapper使用说明
1.引用命名空间
using AutoMapper;
using AutoMapper.Mappers;
2.实体类和dto
public class Order { public int orderid { get; set; } public decimal amount { get; set; } public string address { get; set; } }
public class OrderDto { public int orderid { get; set; } public decimal amount { get; set; } public string address { get; set; } }
3.controller里的代码
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.Mvc; using AutoMapper; using AutoMapper.Mappers; using AutoMaperTest.Models.Entity; using AutoMaperTest.Models.Dto; namespace AutoMaperTest.Controllers { public class HomeController : Controller { // // GET: /Home/ public ActionResult Index() { Mapper.CreateMap<Models.Entity.Order,Models.Dto.OrderDto>(); //初始化 Order o = new Order(){ orderid=100,amount=101,address="beijing" }; OrderDto od=Mapper.Map<OrderDto>(o); //开始映射 Response.Write("entity->dto:"+od.address); OrderDto odnew = new OrderDto { orderid=1,amount=10,address="china" }; Order onew = Mapper.Map<Order>(odnew); Response.Write("dto->entity:"+onew.address); List<Order> lt = new List<Order>(); lt.Add(o); List<OrderDto> ltod = new List<OrderDto>(); lt.Each(temp => { ltod.Add(Mapper.Map<OrderDto>(temp)); }); Response.Write("</br>this is list<>映射:" + ltod[0].address); return View(); } } }
方法2:程序启动时 初始化映射
1.添加一个myprofile 类,让其继承:Profile ,重写方法
protected override void Configure()
{
CreateMap<Models.Entity.Order, Models.Dto.OrderDto>(); //Tsource,Tdestin
CreateMap<Models.Dto.OrderDto, Models.Entity.Order>();
}
2.添加一个 Configuration 类
编写一个静态方法,以便在application_start 里 注册该方法
public static void ConfigureNew()
{
Mapper.Initialize(cfg =>
{
cfg.AddProfile<Profiles.OrderProfile>();
// cfg.AddProfile<Profiles.OrderDtoProfile>();
});
}
在 global.ascx 里 注册 AutoMaperTest.AutoMaper.Configuration.ConfigureNew(); //初始化
参考:http://www.cnblogs.com/youring2/p/automapper.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通