zoukankan      html  css  js  c++  java
  • Automapper

    一、AutoMapper

    说明:Automapper是一个object-object mapping(对象映射)工具,一般主要用于两个对象之间数据映射和交换。

    二、安装程序集包

    1、程序包管理控制台方式

    Install-Package AutoMapper
    

    2、Nuget方式

    三、实体映射

    1、两个实体之间的映射

    using AutoMapper;
    using System;
    
    namespace ConsoleApp1
    {
        class Program
        {
            public class Source
            {
                public int Id { get; set; }
                public string Content { get; set; }
            }
            public class DTOSource
            {
                public int Id { get; set; }
                public string Content { get; set; }
            }
            static void Main(string[] args)
            {
                Mapper.Initialize(x => {
                    x.CreateMap<Source, DTOSource>();
                });
                Source s = new Source { Id = 1, Content = "123" };
                DTOSource dto = Mapper.Map<DTOSource>(s);
                Console.WriteLine("");
            }
        }
    }
    

     

     --这是一种最简单的使用,AutoMapper会更加字段名称去自动对于,忽略大小写。

    2、两个实体不同字段之间的映射

    将DTOSource中的Content的字段名改成Desc,此时只需要建立映射关系时,指定字段就可以了:

    using AutoMapper;
    using System;
    
    namespace ConsoleApp1
    {
        class Program
        {
            public class Source
            {
                public int Id { get; set; }
                public string Content { get; set; }
            }
            public class DTOSource
            {
                public int Id { get; set; }
                public string Desc { get; set; }
            }
            static void Main(string[] args)
            {
                Mapper.Initialize(x => {
                    x.CreateMap<Source, DTOSource>().
                        ForMember(c => c.Desc, q => { q.MapFrom(z => z.Content);});
                });
    
                Source s = new Source { Id = 1, Content = "123" };
                DTOSource dto = Mapper.Map<DTOSource>(s);
                Console.WriteLine("");
            }
        }
    }
    

     

     四、ABP映射

    1、手动映射或自动映射

    属性什么都一一对应的,automap会自动映射:[AutoMap(typeof(Person))]
    2、自定义映射-为了字段不一致的情况下使用自定义映射

     [Table("Person")]
        public class Person : FullAuditedEntity
        {
            public string Name { get; set; }
            public int Sex { get; set; }
        }
    
    public class TestPersonDto
        {
            public string Name { get; set; }
             public int Sex { get; set; }
        }
    

    2.1创建一个PersonMapper映射接口,然后一个一个声明实体之间的映射

      internal static class PersonMapper
        {
            public static void CreateMappings(IMapperConfigurationExpression configuration)
            { //创建
                configuration.CreateMap<TestPersonDto, Person>();
                configuration.CreateMap<Person,TestPersonDto>();
            }
    
       }
    

     2.2最后,不要忘记把这个自定义映射在项目名ApplicationModule中的Initialize()方法声明一下

     public override void Initialize()
            {
                var thisAssembly = typeof(AbpDemoApplicationModule).GetAssembly();
     
                IocManager.RegisterAssemblyByConvention(thisAssembly);
     
                Configuration.Modules.AbpAutoMapper().Configurators.Add(
                    // Scan the assembly for classes which inherit from AutoMapper.Profile
                    cfg => {
                        cfg.AddProfiles(thisAssembly);
                        PersonMapper.CreateMappings(cfg);
                    }
                      
                );
           }
    

    如果字段更改即PersonEditDto的 MyName对应的Person的Name

    修改一下我们映射接口

        internal static class PersonMapper
        {
            public static void CreateMappings(IMapperConfigurationExpression configuration)
            { //创建
                configuration.CreateMap<TestPersonDto, Person>().ForMember(a=>a.Name,b=>b.MapFrom(a=>a.MyName));
                configuration.CreateMap<Person, TestPersonDtoo>().ForMember(a=>a.MyName,b=>b.MapFrom(a=>a.Name));
            }
        }
    
  • 相关阅读:
    git基础教程(三)
    Struts2_day04
    Struts2_day03
    Struts2_day02
    Struts2_day01
    Spring 学习02
    Spring 学习01
    Kafka 温故(五):Kafka的消费编程模型
    Kafka 温故(四):Kafka的安装
    Kafka 温故(三):Kafka的内部机制深入(持久化,分布式,通讯协议)
  • 原文地址:https://www.cnblogs.com/fger/p/10653786.html
Copyright © 2011-2022 走看看