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的主要内容,如果未能解决你的问题,请参考以下文章

AutoMapper使用

AutoMapper使用

ASP.NET Core 中的对象映射之 AutoMapper

在ASP.NET MVC App中初始化AutoMapper v6时出错

AutoMapper 使用心得

Automapper 与 VS2010 是 AutoMapper (逐字)