我有一个收据和类别类。收据是父母,类别是孩子。在将父级映射到子类时遇到问题,即使我在viewmodel中设置了值,我也从子类dto中获得了空值。
下面是我尝试过的代码。
这是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));
这是我在Controller中使用它的方式:
public async Task<IHttpActionResult> CreateReceipt(ReceiptViewModel receiptVM)
{
ReceiptDto receiptDto = Mapper.Map<ReceiptDto>(receiptVM);
}
但是我的数据库中的CategoryId为null。因此,我一直认为问题出在映射上,但是我不确定是哪一部分导致了问题。谢谢。