目录
从 NuGet 安装 AutoMapper
在使用 AutoMapper 时,核心的包是 AutoMapper 和 AutoMapper.Extensions.Microsoft.DependencyInjection。
PM> Install-Package AutoMapperPM> Install-Package AutoMapper.Extensions.Microsoft.DependencyInjection
添加 Entity类 和 Resource类
在项目添加 Post类 和 Resource类。
// Entity类 public class Post { public int PostId { get; set; } public string Title { get; set; } public string Content { get; set; } public DateTime LastModified { get; set; } } // Resource类 public class PostResource { public int PostId { get; set; } public string Title { get; set; } public string Content { get; set; } public DateTime UpdateTime { get; set; } }
添加一个 Profile文件,配置映射关系
随后我们需要继承Profile类来配置映射关系
public class MappingProfile: Profile { //从Post到PostResource的映射 CreateMap() // 对名字不同的字段配置映射 .ForMember(dest => dest.UpdateTime, opt => opt.MapFrom(src => src.LastModified));; //从PostResource到Post的映射,此处没有对名称不同的字段进行映射 CreateMap (); }
在Startup中对AutoMapper进行注册
在Startup类的ConfigureServices方法中进行注册
services.AddAutoMapper();
注册以后会自动找到MappingProfile类。
在项目中使用AutoMapper进行映射
示例如下:
[Route("api/[controller]")] [ApiController] public class ValuesController : ControllerBase { private readonly MyContext _myContext; private readonly IMapper _mapper; public ValuesController(MyContext myContext, IMapper mapper) { _myContext = myContext; _mapper = mapper; } [HttpGet] public ActionResult> Get(int id) { Post post = _myContext.Posts.Find(id); PostResource postResource = _mapper.Map (post); List posts = _myContext.Posts.ToList(); IEnumerable postResources = _mapper .Map , IEnumerable >(posts); return new string[] { "value1", "value2" }; } }
- 参考文档 :
-
-