DTO数据传输对象与AutoMapper

    在web项目的开发中,一般会遇到一个问题:那就是Entity实体的属性与前端界面需要的属性不能匹配。可能多一两个属性,也可能少一两个属性,这个时候就需要一个东西(DTO:数据传输对象),以及辅助工具:AutoMapper。

    DTO:数据传输对象,应用在Entity实体与前端界面的展示问题。在前端需要的属性数据少而Entity属性数据多的时候,我们不可能将整个Entity都传进前端界面但是又不取(不取为何要传?),也不能将所需要的数据通过键值对的方式进行一次次的传递,这个时候,我们就需要DTO,用于封装需要传输的数据,并将所需要的信息不多不少的传入前端。

    AutoMapper:用于辅助属性数据在DTO和Entity之间的转换,你总不会想自己一个一个取再一个一个转吧?

    AutoMapper的使用,看代码:

//Entity实体,省略setter和getter;

public class Article 
        {
            public string Title;
            public string Content;
            public string Author;
            public DateTime PostTime;
            public string Remark;
        }

//DTO,省略setter和getter

public class ArticleDTO
        {
            public string ArticleID;
            public string Title;
            public string Summary;
            public string Content;
            public string Author;
            public DateTime PostTime;
            public int PostYear;
            public string Remark;

      }

public static void Main(string[] args)
        {
            Article article = new Article
            {
                Title = "DTO及AutoMapper的使用",
                Content = "内容",
                Author = "fengwuJ",
                PostTime = DateTime.Now,
                Remark = "文章备注"
            };
            //配置AutoMapper 
            AutoMapper.Mapper.Initialize(cfg =>
            {
                cfg.CreateMap<Article, ArticleDTO>()//创建映射
               .ForMember(dest => dest.ArticleID, opt => opt.MapFrom(src => src.Id))//指定映射规则
               .ForMember(dest => dest.Summary, opt => opt.MapFrom(src => src.Content))//指定映射规则
               .ForMember(dest => dest.PostYear, opt => opt.MapFrom(src => src.PostTime.Year))//指定映射规则
               .ForMember(dest => dest.Remark, opt => opt.Ignore());//指定映射规则 忽视没有的属性
            });

            //调用映射
            ArticleDTO form = AutoMapper.Mapper.Map<Article, ArticleDTO>(article);
        }

发布了46 篇原创文章 · 获赞 3 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/fengwuJ/article/details/82858444