Automapper嵌套映射

Autmapper nested mapping

我有以下主要内容class:

public class ResearchOutcome 
{
    public ResearchOutcomeCategory ResearchOutcomeCategory { get; set; }
    public string? UniqueIdentifier { get; set; }
}

类别class是:

public class ResearchOutcomeCategory 
{
    public int Id { get; set; }
    public string Name { get; set; }
    public string? Description { get; set; }
}

以上 class 的视图模型是:

public class ResearchOutcomeDetailVm : IMapFrom<ResearchOutcome>
{
    public int Id { get; set; }
    public virtual ResearchOutcomeCategoryDetailVm ResearchOutcomeCategory { get; set; }
}

public class ResearchOutcomeCategoryDetailVm : IMapFrom<ResearchOutcomeCategory>
{
    public int Id { get; set; }
    public string Name { get; set; }
    public string Description { get; set; }
}

现在,我使用了以下映射配置文件:

   // First this one
        profile.CreateMap<ResearchOutcomeCategory, ResearchOutcomeCategoryDetailVm>();
        profile.CreateMap<ResearchOutcome, ResearchOutcomeDetailVm>();


   //Then I tried this one


        profile.CreateMap<ResearchOutcome, ResearchOutcomeDetailVm>()
            .ForMember(o => o.ResearchOutcomeCategory, 
                cat => cat.MapFrom( o => o.ResearchOutcomeCategory));

但 ResearchOutcomeCategory 始终为空。任何帮助,将不胜感激。

深入挖掘后,我确定我不是"Including"查询中的相关项,因此,视图模型始终为空。对我来说很愚蠢 :D

关于映射,如果属性(即使是复杂的)具有相同的名称,那么映射器将自动映射它们。所以这条线很简单

            profile.CreateMap<ResearchOutcomeCategory, ResearchOutcomeCategoryDetailVm>();

希望对大家有所帮助