[解決済み] 複数のソースからAutoMapperで変換する
2023-06-19 03:23:25
質問
2つのモデルクラスがあるとします。
public class People {
public string FirstName {get;set;}
public string LastName {get;set;}
}
Phoneというクラスも持っています。
public class Phone {
public string Number {get;set;}
}
そして、このようにPeoplePhoneDtoに変換したいのです。
public class PeoplePhoneDto {
public string FirstName {get;set;}
public string LastName {get;set;}
public string PhoneNumber {get;set;}
}
私のコントローラの中にあるとします。
var people = repository.GetPeople(1);
var phone = repository.GetPhone(4);
// normally, without automapper I would made
return new PeoplePhoneDto(people, phone) ;
このシナリオの例を見つけることができないようです。これは可能ですか?
注:例はこの質問のためだけのものであり、本物ではありません。
どのように解決するのですか?
多くのソースを一つの宛先に直接マッピングすることはできません。 Andrew Whitaker の回答通りです。そのため、すべてのマッピングを定義する必要があります。
Mapper.CreateMap<People, PeoplePhoneDto>();
Mapper.CreateMap<Phone, PeoplePhoneDto>()
.ForMember(d => d.PhoneNumber, a => a.MapFrom(s => s.Number));
そして、これらのマッピングのいずれかを用いて目的地のオブジェクトを作成し、作成したオブジェクトに他のマッピングを適用します。そして、このステップは非常にシンプルな拡張メソッドで簡略化することができます。
public static TDestination Map<TSource, TDestination>(
this TDestination destination, TSource source)
{
return Mapper.Map(source, destination);
}
使い方はとても簡単です。
var dto = Mapper.Map<PeoplePhoneDto>(people)
.Map(phone);
関連
-
[解決済み] エンティティタイプ ApplicationUser は、現在のコンテキストのモデルの一部ではありません。
-
[解決済み】C#におけるtypedefの等価性
-
[解決済み] エンティティタイプ <type> は、現在のコンテキストのモデルの一部ではありません。
-
[解決済み】クロススレッド操作が有効でない。作成されたスレッド以外のスレッドからアクセスされたコントロール
-
[解決済み】名前 'ViewBag' が現在のコンテキストに存在しない - Visual Studio 2015
-
[解決済み] 複数の例外を一度にキャッチする?
-
[解決済み] C#でenumからint値を取得する
-
[解決済み] なぜList<T>を継承しないのですか?
-
[解決済み] C#: オブジェクトのリストを、そのオブジェクトの単一のプロパティのリストに変換するには?
-
[解決済み] AutoMapper .ForMemberの使い方は?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】"出力タイプがクラスライブラリのプロジェクトは直接起動できない"
-
[解決済み] エンティティタイプ ApplicationUser は、現在のコンテキストのモデルの一部ではありません。
-
[解決済み】コンパイルエラー「未割り当てのローカル変数を使用しています」が発生したのはなぜですか?
-
[解決済み】C# ASP.NET使用時に「WebClientのリクエスト中に例外が発生しました。
-
[解決済み] DBNullから他の型にオブジェクトをキャストすることができない
-
[解決済み】Unity3DでOnTriggerEnterが動作しない件
-
[解決済み】C# - パスに不正な文字がある場合
-
[解決済み】なぜこのコードはInvalidOperationExceptionを投げるのですか?
-
[解決済み】ランダムなブーリアンを生成する最速の方法
-
[解決済み】ファイルやアセンブリ、またはその依存関係の1つをロードできませんでした。