欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

C# AutoMapper 了解一下

程序员文章站 2022-04-28 09:17:10
什么是AutoMapper? 简单来说就是将一个对象映射到另一个对象的代码。 摆脱了繁琐的赋值过程 (最常见也就是Model -——ViewModel) AutoMapper安装 我使用的是VS2015 可以在NuGet中直接输入AutoMapper 去下载 也可以使用控制台命令 PM> Insta ......

什么是AutoMapper?

简单来说就是将一个对象映射到另一个对象的代码。 摆脱了繁琐的赋值过程 (最常见也就是Model -——ViewModel)

 

AutoMapper安装

我使用的是VS2015   可以在NuGet中直接输入AutoMapper 去下载

C# AutoMapper 了解一下

 

也可以使用控制台命令

PM> Install-Package AutoMapper

 

这里我定义了两个类   ShopingInfo         ShopingInfoViewModel

 public class ShopingInfo:EntityBase
    {

        public string ShopingName { get; set; }

        public int ShopingCount { get; set; }

        public decimal ShopingPric { get; set; }

        public int Stock { get; set; }

        public int Volumeofvolume { get; set; }

        public int ShopingTypeId { get; set; }

        public virtual ShopingType ShopingType { get; set; }
    }

 

    public class ShopingInfoViewModel
    {
        public int ID { get; set; }
       
        public string ShopingName { get; set; }
      
        public int ShopingCount { get; set; }
        
        public decimal ShopingPric { get; set; }
        
        public int Stock { get; set; }
        
        public int Volumeofvolume { get; set; }
      
        public string ShopingTypeName { get; set; }
    }

 

需要用到的命名空间

using AutoMapper;

 

然后 专门建了一个类用来存放这些映射关系SourceProfile 并且继承了 Profile

    public class SourceProfile : Profile
    {
       public SourceProfile()
        {
            base.CreateMap<ShopingInfo, ShopingInfoViewModel>();
        }
    }

如果 我们发现两类中有字段名不一致。 

例如 我吧shopingInfoViewModel 中的 ShopingName  改为  Name    那你可以这样写

 public class SourceProfile : Profile
    {
       public SourceProfile()
        {
           base.CreateMap<ShopingInfo, ShopingInfoViewModel>();

          // base.CreateMap<ShopingInfo, ShopingInfoViewModel>().ForMember(x => x.Name,
          //      q => { q.MapFrom(z => z.ShopingName);
          //  });
        }
    }

 

建了个中间类 用来封装上面的代码

  public class AutoMapper
    {
        public static void Start()
        {
            Mapper.Initialize(x =>
            {
                x.AddProfile<SourceProfile>();
            });
        }
    }

 

然后就在全局类Global中 使得 启动初始化就去加载 加入下面这句代码

AutoMapper.Start();


好了。 基本的都搞好了。 现在测试一下
C# AutoMapper 了解一下
可以 看到 已经映射上去了。

学习不能停下。 每天学习点。 会使自己变得越有价值