22

我有一个像这样的简单模型:

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

我用 Automapper 做的是:

    Mapper.CreateMap<Order, OrderDto>();
    Mapper.CreateMap<OrderLine, OrderLineDto>();
    Mapper.AssertConfigurationIsValid();

它抛出一个异常,上面写着:“OrderDto 中的属性 OrderLineDtos 未映射,添加自定义映射......”当我们在 Domain 和 DomainDto 中使用自定义语法时,我如何指定 OrderDto 中的集合 OrderLineDtos 对应于OrderLines 是否有序?

谢谢

4

2 回答 2

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();
于 2009-11-24T13:33:48.037 回答
8

只要名称匹配,嵌套集合就可以工作。在您的 DTO 中,您的集合名称为“OrderLineDtos”,但在 Order 对象中,它只是“OrderLines”。如果您删除 OrderLineDtos 和 ParentOrderDto 属性名称的“Dtos”部分,它应该都匹配。

于 2009-11-28T05:15:30.633 回答