加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

C# AutoMapper 了解一下

发布时间:2020-12-15 19:52:58 所属栏目:百科 来源:网络整理
导读:什么是AutoMapper? 简单来说就是将一个对象映射到另一个对象的代码。 摆脱了繁琐的赋值过程 (最常见也就是Model -——ViewModel) AutoMapper安装 我使用的是VS2015? ?可以在NuGet中直接输入AutoMapper 去下载 也可以使用控制台命令 PM Install-Package Au

什么是AutoMapper?

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

AutoMapper安装

我使用的是VS2015? ?可以在NuGet中直接输入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();//好了。 基本的都搞好了。 现在测试一下可以 看到 已经映射上去了。 学习不能停下。 每天学习点。 会使自己变得越有价值

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读