我有一个像这样的简单模型:
public class Order{
public int Id { get; set; }
... ...
public IList<OrderLine> OrderLines { get; set; }
}
public class OrderLine{
public int Id { get; set; }
public Order ParentOrder { get; set; }
... ...
}
Run Code Online (Sandbox Code Playgroud)
我用Automapper做的是这样的:
Mapper.CreateMap<Order, OrderDto>();
Mapper.CreateMap<OrderLine, OrderLineDto>();
Mapper.AssertConfigurationIsValid();
Run Code Online (Sandbox Code Playgroud)
它抛出一个异常,说:"OrderDto中的OrderLineDtos属性未映射,添加自定义映射......"当我们在Domain和DomainDto中使用自定义语法时,我如何指定OrderDto中的OrderLineDtos集合对应于OrderLines有序吗?
谢谢
Raf*_*aeu 22
它以这种方式工作:
Mapper.CreateMap<Order, OrderDto>()
.ForMember(dest => dest.OrderLineDtos, opt => opt.MapFrom(src => src.OrderLines));
Mapper.CreateMap<OrderLine, OrderLineDto>()
.ForMember(dest => dest.ParentOrderDto, opt => opt.MapFrom(src => src.ParentOrder));
Mapper.AssertConfigurationIsValid();
Run Code Online (Sandbox Code Playgroud)
只要名称匹配,嵌套集合就可以工作.在您的DTO中,您的集合名称为"OrderLineDtos",但在Order对象中,它只是"OrderLines".如果删除OrderLineDtos和ParentOrderDto属性名称的"Dtos"部分,它应该全部匹配.