automapper类和嵌套类映射到一个类

Nad*_*edr 5 automapper

我写了很多描述,但我认为制作一张图片会让我的问题比文字更清晰

映射过程

我已将此写入地图,但它会引发异常

Mapper.CreateMap<GenericStory, GenericStoryDisplayViewModel>().ForMember(
            gs => gs.StoryBody,dest => dest.MapFrom( gs => gs));
Run Code Online (Sandbox Code Playgroud)

尝试将StoryWriting.Web.Models.GenericStory映射到StoryWriting.Web.ViewModels.StoryBodyViewModel.使用StoryWriting.Web.Models.GenericStory到StoryWriting.Web.ViewModels.GenericStoryDisplayViewModel目标属性的映射配置:StoryBody缺少类型映射配置或不支持的映射.抛出了"AutoMapper.AutoMapperMappingException"类型的异常.

Khe*_*pri 7

我认为使用AutoMapper你也必须映射子类型,无论它们是否包含在另一个映射类型中?

所以在这种情况下你会添加

Mapper.CreateMap<GenericStory, StoryBodyViewlModel>();
Run Code Online (Sandbox Code Playgroud)

然后是你当前的映射.

编辑:

我已经更新了我的测试用例,甚至可以匹配您的图像,并且它正在按预期运行:

public class GenericStory
{
    public string Description { get; set; }
    public int Id { get; set; }
    public bool IsFavoritedByCurrentUser { get; set; }
    public int StoryTypeId { get; set; }
    public string StoryTypeName { get; set; }
    public string Html { get; set; }
    public string Title { get; set; }
    public int TotalFavoritedByUsers { get; set; }
}

public class GenericStoryDisplayViewModel
{
    public string Description { get; set; }
    public int Id { get; set; }
    public int StoryTypeId { get; set; }
    public string StoryTypeName { get; set; }

    public StoryBodyViewModel StoryBody { get; set; }
}

public class StoryBodyViewModel
{
    public string Title { get; set; }
    public string Html { get; set; }

    public int TotalFavoritedByUsers { get; set; }
    public bool IsFavoritedByCurrentUser { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

然后是我的考试

private static void Main()
{
    var story = new GenericStory
    {
        Description = "Lorem ipsum dolor sit amet,....etc",
        Html = "<h1>ZOMG!</hl>\r\n\r\n<h2>BEES!</h2>",
        Id = 9,
        IsFavoritedByCurrentUser = true,
        StoryTypeId = 1,
        StoryTypeName = "ShortStory",
        Title = "Test Story",
        TotalFavoritedByUsers = 1
    };

    var vm = new GenericStoryDisplayViewModel();

    Mapper.CreateMap<GenericStory, StoryBodyViewModel>();
    Mapper.CreateMap<GenericStory, GenericStoryDisplayViewModel>()
       .ForMember(dest => dest.StoryBody, opt => opt.MapFrom(src => src));

    Mapper.Map(story, vm);

    Console.ReadKey();
}
Run Code Online (Sandbox Code Playgroud)

结果:

结果