zoukankan      html  css  js  c++  java
  • 在 ASP.NET Core 中使用 AutoMapper 使 Entity 和 Resource 之间进行映射

    从 NuGet 安装 AutoMapper

    在使用 AutoMapper 时,核心的包是 AutoMapperAutoMapper.Extensions.Microsoft.DependencyInjection

    PM> Install-Package AutoMapper
    PM> 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<Post, PostResource>()
    			// 对名字不同的字段配置映射
    			.ForMember(dest => dest.UpdateTime, opt => opt.MapFrom(src => src.LastModified));;
    		//从PostResource到Post的映射,此处没有对名称不同的字段进行映射
    		CreateMap<PostResource, Post>();
    	}
    

    在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<IEnumerable<string>> Get(int id)
            {
                Post post = _myContext.Posts.Find(id);
                PostResource postResource = _mapper.Map<Post, PostResource>(post);
    
                List<Post> posts = _myContext.Posts.ToList();
                IEnumerable<PostResource> postResources = _mapper
                	.Map<IEnumerable<Post>, IEnumerable<PostResource>>(posts);
                return new string[] { "value1", "value2" };
            }
        }
    

    参考文档 :
  • 相关阅读:
    内核学习<1>
    守护进程(Daemon进程)
    内核模块版本和内核版本不一致的处理方法
    下载,安装 Source Navigator(ubuntu 14.04)
    最新android NDK 下载地址 for Windows
    HTML5初学一 随机的骰子
    系统自带视频
    网络接口log打印
    recyclerView嵌套recycleView
    冒泡循环
  • 原文地址:https://www.cnblogs.com/MaleDeer/p/10797508.html
Copyright © 2011-2022 走看看