У меня есть чек и категория. Квитанция является родителем, а категория - дочерним. Я сталкиваюсь с проблемой во время сопоставления моего родителя с дочерним классом, я получаю нулевое значение от дочернего класса 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 был нулевым в моей базе данных. Так что я думал, что проблема в картографии, но я не уверен, какая часть вызывает проблему. Спасибо.