是什么?
简单来说就是将一个对象映射到另一个对象的代码。 摆脱了繁琐的赋值过程 (最常见也就是Model -——ViewModel)
怎么安装?
在NuGet中直接输入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; }
}
1、需要用到命名空间
using AutoMapper;
2、然后 专门建了一个类用来存放这些映射关系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()