如何使用 AutoMapper 11.0.0 对此进行映射?

How to map this using AutoMapper 11.0.0?

我有一个模型 类 如下所示。

    public class ModelA
    {
        public string Id { get; set; }
        public string Name { get; set; }
        public string Description { get; set; }
        public string DetailId{ get; set; }
        public string DetailName { get; set; }
        public string DetailDescription { get; set; }
    }

    public class ModelB
    {
        public string Id { get; set; }
        public string Name { get; set; }
        public string Description { get; set; }
    }

    public class ModelC
    {
        public string Id { get; set; }
        public string Name { get; set; }
        public string Description { get; set; }
        public ModelB Detail { get; set; }
    }

现在,我想将 ModelA 映射到 ModelC,其中

这可以使用 Automapper 11.0.0 吗? 如果可以,怎么做?

使用此代码:

CreateMap<ModelA, ModelC>()
    .ForMember(d => d.Detail.Id, src => src.MapFrom(e => e.DetailId))
    .ForMember(d => d.Detail.Description, src => src.MapFrom(e => e.DetailDescription))
    .ForMember(d => d.Detail.Name, src => src.MapFrom(e => e.DetailName))
    .ReverseMap();
    var config = new MapperConfiguration(cfg => {
    cfg.CreateMap< ModelA, ModelC >().ForMember(u => u. Detail, o => o.MapFrom(s => s));
});

你想要model中的model映射,但是modelA和modelC的结构不一样

感谢您的回答。

不过我已经解决了。

    MapperConfiguration _config = new MapperConfiguration(cfg =>
    {

        cfg.CreateMap<ModelA, ModelB>()
            .ForMember(d => d.DetailId, opt => opt.MapFrom(s => s.Id))
            .ForMember(d => d.DetailName , opt => opt.MapFrom(s => s.Name))
            .ForMember(d => d.DetailDescription, opt => opt.MapFrom(s => s.Description))
            .ReverseMap();


        cfg.CreateMap<ModelC, ModelA>()
            .ForMember(d => d.DetailId, opt => opt.MapFrom(s => s.Detail.Id ))
            .ForMember(d => d.DetailName , opt => opt.MapFrom(s => s.Detail.Name ))
            .ForMember(d => d.DetailDescription, opt => opt.MapFrom(s => s.Detail.Description ))

        cfg.CreateMap<ModelA, ModelC>()
            .ForMember(d => d.Detail, opt => opt.MapFrom(s => Mapper.Map<ModelA, ModelB>(s)))

    });

更新

找到更好的解决方案。 查看下面的 link。

https://dotnettutorials.net/lesson/mapping-complex-type-to-primitive-type-using-automapper/