• AutoMapper的使用


    在依赖项中右击打开管理Nuget程序包,搜索AutoMapper并安装。

    使用AutoMapper将一个对象赋值给另外一个对象

    BookDto 实体类对象

        public class BookDto
        {
            public string Title { get; set; }
    
            public string Author { get; set; }
    
            public int Status { get; set; }
    
            public int buyCount { get; set; } = 5;
    
            public DateTime CreateDate { get; set; } = DateTime.Now;
    
            public string Remark { get; set; } = "123456789765432";
    
            public string Test1 { get; set; }
    
            
        }
    BookDto实体类

    BookViewModel 用户显示视图的模型对象

        public class BookViewModel
        {
            public string Title { get; set; }
    
            public string Author { get; set; }
    
            public string StatusText { get; set; }
    
            public string CreateDate { get; set; }
    
            public int buyCount { get; set; }
    
            public string Remark { get; set; }
    
            public string Test1 { get; set; }
    
            public string BookInfo { get; set; }
        }
    BookViewModel 用户视图显示的模型

    得到BookDto的实例对象,需要给BookViewModel

                BookDto book = new BookDto()
                {
                    Author = "度边",
                    Title = "知行合一王阳明",
                    Status = 1
                };

    如何将BookDto实例对象的值赋给BookViewModel实例呢?

            /// <summary>
            /// 使用AutoMaper将BookDto实例赋值给BookViewModel实例
            /// </summary>
            /// <param name="book"></param>
            /// <returns></returns>
            public static BookViewModel PrepareBookViewModel(BookDto book)
            {
                var config2 = new MapperConfiguration(
                        cfg => cfg.CreateMap<BookDto, BookViewModel>()
                            .ForMember(d => d.Title, opt => opt.MapFrom(s => s.Title))    //指定字段一一对应
                            .ForMember(d => d.CreateDate, opt => opt.MapFrom(src => src.CreateDate.ToString("yy-MM-dd HH:mm:ss")))//指定字段,并转化指定的格式
                            .ForMember(d => d.buyCount, opt => opt.Condition(src => src.buyCount > 5))//条件赋值
                            .ForMember(d => d.Remark, opt => opt.Ignore())//忽略该字段,不给该字段赋值
                            .ForMember(d => d.Test1, opt => opt.NullSubstitute("空了"))//如果源字段值为空,则赋值为 空了
                            .ForMember(d => d.StatusText, opt =>
                            {
                                opt.MapFrom(s => s.Status == 1 ? "可用" : "不可用");
                            })
                            .ForMember(d => d.BookInfo, opt => opt.MapFrom(src => src.Title + src.CreateDate.ToString("yyyy-MM-dd"))));//可以自己随意组合赋值
                var mapper2 = config2.CreateMapper();
                return mapper2.Map<BookViewModel>(book);
    
            }
  • 相关阅读:
    【svn】一个设置,少写几个字
    转眼一年
    linux虚拟机与windows主机传输文件方法
    meta常用命令
    Metasploit 读书笔记-持久控制
    Metasploit 读书笔记-神器Meterpreter
    [工作]采购失误
    解决:kali linux 在vmware 虚拟机中使用bridge模式上网的问题
    metasploit 读书笔记-EXPLOITATION
    [共鸣]温州600住户合买高音炮 还击广场舞大妈
  • 原文地址:https://www.cnblogs.com/huangzhen22/p/10785055.html
Copyright © 2020-2023  润新知