简体   繁体   English

Automapper中的名称约定

[英]Name convention in Automapper

I know that Automapper can automatically map from: 我知道Automapper可以自动从以下位置进行映射:

class SomeClassA 
{
    public int Id { get; set; }
    public B Member { get; set; }
}
class SomeClassB 
{
    public int Id { get; set; }
    public string Name { get; set; }
}

to: 至:

class SomeClassADto 
{
    public int Id { get; set; }
    public int Member_Id { get; set; }
    public string Member_Name { get; set; }
} 

But how can I make Automapper map from my SomeClassADto to SomeClassA automatically? 但是,如何使Automapper自动从我的SomeClassAD映射到SomeClassA?

No the prettiest thing in the world, but it does work. 世界上没有最漂亮的东西,但是它确实起作用。 Downside is maintenance is a pain as you add properties to the DTO and class you need to update the mapping. 缺点是维护很麻烦,因为您需要向DTO添加属性和更新映射所需的类。

var config = new MapperConfiguration(x =>
{
    x.CreateMap<SomeClassADto, SomeClassB>()
        .ForMember(i => i.Id, i => i.MapFrom(src => src.Member_Id))
        .ForMember(i => i.Name, i => i.MapFrom(src => src.Member_Name));
    x.CreateMap<SomeClassADto, SomeClassA>()
        .AfterMap((s, d, r) => d.Member = r.Mapper.Map<SomeClassB>(s));
});
IMapper mapper = config.CreateMapper();

var foo = mapper.Map<SomeClassA>(new SomeClassADto() { Id = 1, Member_Id = 2, Member_Name = "Name" });

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM