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的评论:)