Сопоставление родительского класса Dto с дочерним классом ViewModel с помощью AutoMapper - PullRequest
0 голосов
/ 20 января 2019

У меня есть чек и категория. Квитанция является родителем, а категория - дочерним. Я сталкиваюсь с проблемой во время сопоставления моего родителя с дочерним классом, я получаю нулевое значение от дочернего класса dto, даже если я установил значение в viewmodel.

Ниже приведены коды, которые я пробовал.

Это DTO:

public class ReceiptDto
{
    public int ReceiptId { get; set; }
    public int CategoryId { get; set; }
}

public class CategoryDto
{
    public int CategoryId { get; set; }
}

Это моя ViewModel:

public class ReceiptViewModel
{
    public int ReceiptId { get; set; }
    public CategoryViewModel CategoryVM { get; set; }
}

public class CategoryViewModel
{
    public int CategoryId { get; set; }
}

Вот как я сопоставляю с использованием AutoMapper:

CreateMap<ReceiptDto, CategoryViewModel>(MemberList.None)
    .ReverseMap()
    .ForAllMembers(opts => opts.Condition((src, dest, srcMember) => srcMember != null));

CreateMap<ReceiptDto, ReceiptViewModel>(MemberList.None)
    .ForMember(dest => dest.CategoryVM, opt => opt.MapFrom(src => Mapper.Map<ReceiptDto, CategoryViewModel>(src)))
    .ReverseMap()
    .ForAllMembers(opts => opts.Condition((src, dest, srcMember) => srcMember != null));

CreateMap<CategoryDto, CategoryViewModel>(MemberList.None)
    .ReverseMap()
    .ForAllMembers(opts => opts.Condition((src, dest, srcMember) => srcMember != null));

Вот как я использовал его в контроллере:

public async Task<IHttpActionResult> CreateReceipt(ReceiptViewModel receiptVM)
    {
        ReceiptDto receiptDto = Mapper.Map<ReceiptDto>(receiptVM);
    }

Но тогда CategoryId был нулевым в моей базе данных. Так что я думал, что проблема в картографии, но я не уверен, какая часть вызывает проблему. Спасибо.

...