C# 使用预先创建的映射自动映射子实体

C# 使用预先创建的映射自动映射子实体,c#,automapper,C#,Automapper,我已创建此映射: Mapper.CreateMap<User, UserModel>() .ForMember(um => um.UID, mo => mo.MapFrom(s => s.Id)); Mapper.CreateMap() .ForMember(um=>um.UID,mo=>mo.MapFrom(s=>s.Id)); 我将创建此映射: Mapper.CreateMap<Blog, BlogModel>() .ForMembe

我已创建此映射:

Mapper.CreateMap<User, UserModel>()
   .ForMember(um => um.UID, mo => mo.MapFrom(s => s.Id));
Mapper.CreateMap()
.ForMember(um=>um.UID,mo=>mo.MapFrom(s=>s.Id));
我将创建此映射:

Mapper.CreateMap<Blog, BlogModel>()
   .ForMember(bm => bm.Author, mc => mc.MapFrom(m => m.Author));
Mapper.CreateMap()
.ForMember(bm=>bm.Author,mc=>mc.MapFrom(m=>m.Author));
因此
作者
博客
中的
用户
,但在
博客模型
中,我希望减少信息量

我的问题是,当
博客
被映射时,它会使用
用户
映射,还是我如何让它使用该映射配置?

源对象

目标对象

对象映射


是的,会的。以下是示例:

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

此外,如果要映射部分模型或不同类型的映射,请查看。然后,您可以按以下方式使用它:

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 ()));
public类YourCustomResolver:ValueResolver
{
受保护的重写模型ResolveCore的TopPart(FromModel)
{
//手动映射或对AutoMapper的另一个调用
}
}
//配置映射器
AutoMapper.Mapper.CreateMap()。
FormMember(o=>o.ImageLogoMin,opt=>opt.ResolveUsing().ConstructedBy(()=>new YourCustomResolver());

希望有帮助。

thnx的评论:)