1

配列を型にマップしようとして問題が発生しています。次のエラーが表示されます

Missing type map configuration or unsupported mapping.

Mapping types:
Run[] -> Run

宛先項目は Run であり、ソースは Run (配列) です。global.asax でマッピングをセットアップします。

   Mapper.CreateMap<Model.Run, Run>();

どんなアイデアでも、私は何かが欠けていると思います。

4

1 に答える 1

6

タイプ マッピングを指定すると、AutoMapper はコレクションからコレクションへ自動的にマッピングできます。

Mapper.CreateMap<Model.Run, Run>();

あなたはただ一緒に行くことができます

var runs = Mapper.Map<IEnumerable<Model.Run>, IEnumerable<Run>>(source);

自然に従うため、指定した1対1のマップを使用して、ソースコレクションのすべてのアイテムを宛先コレクションにマップします。従わないのは自動T -> T[]またはT[] -> Tマッピングです。マッピング時にマッパーは何をすべきT[] -> Tですか? 配列から最初の項目を取得しますか? それとも最後のものですか?ある種の集約を行いますか?コレクションが空の場合はどうなりますか?

そのためには、別の完全なマップを作成する必要があります。たとえば、次のようになります。

Mapper.CreateMap<Model.Run[], Run>()
      .ForMember(x => x.NumericMember, expr => expr.MapFrom(y => y.Sum(z => z.NumericMember)))
      .ForMember(//etc...);
于 2013-04-09T08:56:30.657 に答える