DTO数据传输对象与AutoMapper

13 篇文章 0 订阅

    在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);
        }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值