具有预先创建的映射的AutoMapper子实体

时间:2014-08-02 13:43:21

标签: c# automapper

我创建了这个映射:

Mapper.CreateMap<User, UserModel>()
   .ForMember(um => um.UID, mo => mo.MapFrom(s => s.Id));

我即将创建此映射:

Mapper.CreateMap<Blog, BlogModel>()
   .ForMember(bm => bm.Author, mc => mc.MapFrom(m => m.Author));

所以Author UserBlog BlogModel,但Blog我希望减少信息量。

我的问题是,当User被映射时,它是否会使用{{1}}映射,或者如何让它使用该映射配置?

2 个答案:

答案 0 :(得分:1)

源对象

enter image description here

目标对象

enter image description here

对象映射

enter image description here

答案 1 :(得分:1)

是的,它会的。这是样本:

Mapped

现在,删除您的映射,您将看到异常,因为AutoMapper不知道如何转换您的实体:

enter image description here

此外,如果要映射部分模型或不同类型的映射,请查看Value Resolver class。您可以使用它,如下所示:

public class YourCustomResolver : ValueResolver<FromModel, ToPartOfModel>
{
    protected override ToPartOfModel ResolveCore(FromModel)
    {
        // Your manual mapping or another call to AutoMapper
    }
}

// Configuring mapper
AutoMapper.Mapper.CreateMap<FromModel, ToModel>().
    ForMember(o => o.ImageLogoMin, opt => opt.ResolveUsing<YourCustomResolver >().ConstructedBy(() => new YourCustomResolver ()));

希望它有所帮助。