将具有相同名称的字段映射到自动映射器中的不同文件

时间:2019-04-01 11:28:16

标签: c# .net asp.net-core .net-core automapper

我有一个要从.net core 2.0中的Match类映射的模型。 这两个类都具有Name属性。

我需要映射 Match.Value => ViewCompany.Name

但是它总是将 Match.Name放入ViewCompany.Name

这是我的 AutomapperProfile

CreateMap<Match, ViewCompany>()
                .ForMember(dest => dest.Name, opt => opt.MapFrom(src => src.Value));

.ForMember(目的地=> 目的地名称,opt => opt.MapFrom(src => src.Value ))

ViewCompany

public class ViewCompany
{
    public ViewCompany()
    {

    }

    public ViewCompany(string name)
    {
        this.Name = name;
    }

    public int Id { get; set; }

    public string Name { get; set; }
}

上面的映射不起作用。

但是,如果我将模型中的属性名称更改为“ Value”或“ tempName”之类的内容并更新自动映射器配置文件,则可以正常工作。

因此,在Automapper中不可能将具有相同名称的属性映射到不同的属性吗?

1 个答案:

答案 0 :(得分:3)

这里发生的是Name是通过the constructor映射的。避免这种情况的一种简单方法是告诉AM使用哪种构造函数:

 CreateMap<Match, ViewCompany>().ConstructUsing(source=>new ViewCompany());