1. ホーム
  2. asp.net-mvc

Automapperによるリストのマッピング

2023-09-19 21:43:37

質問

私はクラスを持っています。

public class Person{ /* Props here */ }

public class PersonViewModel { /* Props here */ }

次にリスト。

List<Person> people = new List<Person>();
List<PersonViewModel> peopleVM = Mapper
                                .MapList<Person, PersonViewModel>(people); //Problem here.

正しい方法は何ですか?

どのように解決するのですか?

Mapper.CreateMap<Person, PersonViewModel>();
peopleVM = Mapper.Map<List<Person>, List<PersonViewModel>>(people);
Mapper.AssertConfigurationIsValid();

から 開始 :

AutoMapperはどのように使うのですか?

まず、動作させるためには、ソース タイプとデスティネーション タイプの両方が必要です。デスティネーション タイプのデザインは、それが存在するレイヤーの影響を受けることがありますが、AutoMapper は、メンバーの名前がソース タイプのメンバーと一致する限り、最もうまく機能します。ソース メンバに "FirstName" という名前がある場合、これは自動的に "FirstName" という名前のデスティネーション メンバにマッピングされます。AutoMapperはFlatteningもサポートしており、途中で発生する可能性のある厄介なヌル参照例外をすべて取り除くことができます。

型とAutoMapperへの参照ができたら、2つの型のためのマップを作成することができます。

Mapper.CreateMap<Order, OrderDto>();

左の型がマッピング元の型、右の型がマッピング先の型です。マッピングを行うには、Mapメソッドを使用します。

OrderDto dto = Mapper.Map<Order, OrderDto>(order);