automapper怎样初始化configure
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了automapper怎样初始化configure相关的知识,希望对你有一定的参考价值。
参考技术A AutoMapper是基于约定的,因此在实用映射之前,我们需要先进行映射规则的配置。public class Source
public int SomeValue get; set;
public string AnotherValue get; set;
public class Destination
public int SomeValue get; set;
在上面的代码中,我们定义了两个类,我们需要将Source类的对象映射到Destination类的对象上面。要完成这个操作,我们需要对AutoMapper进行如下配置:
Mapper.CreateMap<Source, Destination>();
进行一下测试:
Source src = new Source() SomeValue = 1, AnotherValue = "2" ;
Destination dest = Mapper.Map<Destination>(src);
ObjectDumper.Write(dest);
我们可以在控制台看到dest对象的属性值:
image
这样我们就完成了一个简单的AutoMapper映射。
Profile的用法
Profile提供了一个命名的映射类,所有继承自Profile类的子类都是一个映射集合。
我们来看一下Profile的用法,这个例子中仍然使用上面的Source类和Destination类。
public class SourceProfile : Profile
protected override void Configure()
CreateMap<Source, Destination>();
我们可以再Profile中重写Configure方法,从而完成映射规则的配置。从Profile初始化Mapper规则:
Mapper.Initialize(x => x.AddProfile<SourceProfile>());
在一个Profile中,我们可以完成多个、更复杂的规则的约定:
public class Destination2
public int SomeValue get; set;
public string AnotherValue2 get; set;
public class SourceProfile : Profile
protected override void Configure()
//Source->Destination
CreateMap<Source, Destination>();
//Source->Destination2
CreateMap<Source, Destination2>().ForMember(d => d.AnotherValue2, opt =>
opt.MapFrom(s => s.AnotherValue);
);
AutoMapper使用
AutoMapper初始化 在global.axax的Application_Start中使用AutoMapperConfiguration.Configure();
using AutoMapper; using System; using System.Collections.Generic; using System.Linq; using System.Web; namespace BaseAsset.Api.Mappings { public class AutoMapperConfiguration { public static void Configure() { Mapper.Initialize(x => { //DomainToViewModelMappingProfile文件将被实例化并添加到配置中。 x.AddProfile<DomainToViewModelMappingProfile>(); }); } } }
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using AutoMapper; using BaseAsset.Api.Models.Assets; using BaseAsset.Entities; using BaseAsset.Api.Models.Food; using BaseAsset.Api.Models.group; using BaseAsset.Entities.Dto; using BaseAsset.Api.Models.Enter; using BaseAsset.Api.Models.Home; using BaseAsset.Entities.CaseDto.Req; using BaseAsset.Entities.CaseEntities; using BaseAsset.Api.Models.service; using BaseAsset.Api.Models.Item; namespace BaseAsset.Api.Mappings { public class DomainToViewModelMappingProfile : Profile { public DomainToViewModelMappingProfile() { //来源,目标 CreateMap<en_enter_object, EnterObjectModel>(); CreateMap<en_enter_object, EnterObjectViewModel>().ForMember(d=>d.name,opt=> { opt.MapFrom(a => a.name + a.idcard);//重写映射规则 }); } } }
使用:
var enterObj = new EnterObjectViewModel();
enterObj = Mapper.Map<en_enter_object, EnterObjectViewModel>(obj);
以上是关于automapper怎样初始化configure的主要内容,如果未能解决你的问题,请参考以下文章
ASP.NET Core 中的对象映射之 AutoMapper