Autmapper вложенное отображение - PullRequest
0 голосов
/ 05 апреля 2020

У меня есть следующий основной класс:

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; }
}

Модели View для вышеперечисленных классов:

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 всегда равен нулю. Любая помощь будет оценена.

1 Ответ

0 голосов
/ 05 апреля 2020

Покопав больше, я обнаружил, что не «включаю» соответствующий элемент в запрос, следовательно, модель представления всегда была пустой. Довольно глупо с моей стороны: D

Что касается сопоставления, если свойства (даже сложные) имеют одинаковые имена, то сопоставитель отобразит их автоматически. Так просто эта строка работала

            profile.CreateMap<ResearchOutcomeCategory, ResearchOutcomeCategoryDetailVm>();

Надеюсь, это кому-нибудь поможет

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...