【问题标题】:Autmapper nested mappingAutomapper 嵌套映射
【发布时间】:2020-07-17 18:38:51
【问题描述】:

我有以下主要课程:

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

类别类是:

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

上述类的视图模型是:

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 始终为空。任何帮助,将不胜感激。

【问题讨论】:

    标签: nested mapping automapper


    【解决方案1】:

    在深入挖掘之后,我发现我没有在查询中“包含”相关项目,因此,视图模型始终为空。我很愚蠢:D

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

                profile.CreateMap<ResearchOutcomeCategory, ResearchOutcomeCategoryDetailVm>();
    

    希望对某人有所帮助

    【讨论】:

    • 请注意,如果您使用ProjectTo,则不再需要Include。
    • 谢谢@LucianBargaoanu,不知道
    猜你喜欢
    • 1970-01-01
    • 2017-07-20
    • 2020-02-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多