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がマップされていないので、カスタムマッピングを追加してください...」という例外がスローされます。ドメインとDomainDtoでカスタム構文を使用しているため、OrderDtoのコレクションOrderLineDtosがに対応するように指定するにはどうすればよいですか。 OrderLines in Order?

ありがとうございました

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 に答える