問題タブ [automapper-5]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
86 参照

automapper - ネストされたオブジェクトをマップする方法

Automapper で次のマッピングを設定しています

ContactRegisterViewModel を SecurityAccess に変換しようとしています。変換は部分的に機能します。SecurityAccess モデルにある Address プロパティ フィールドを含む、SecurityAccess に入力された関連プロパティを取得できますが、ContactRegisterViewModel プロパティ CompanyName を Address.Company.Name のプロパティにさらにマップしようとすると、私は打たれます。

オブジェクトツリー全体をどのようにマッピングできるか提案はありますか?.

0 投票する
1 に答える
18122 参照

c# - AutoMapper の新しい IValueResolver を使用するには?

IValueResolver新しいバージョンの AutoMapper で新しいインターフェイスを使用する方法がわかりません。おそらく、以前のバージョンの AutoMapper では不適切に使用していたのでしょう...

多くのモデル クラスがあり、そのうちのいくつかは、sqlmetal を使用して複数のデータベース サーバー上の複数のデータベースから生成されます。

これらのクラスの一部にはPublicationCode、サブスクリプション、オファー、請求書、またはそれが何であれ、どのパブリケーションに属しているかを識別する文字列プロパティ があります。

パブリケーションは 2 つのシステム (古いシステムと新しいシステム) のいずれかに存在する可能性があるため、目的のモデル クラスには、パブリケーションが古いシステムにあるか新しいシステムにあるかを示す bool プロパティがあります。

古いバージョン (<5?) の AutoMapper を使用しValueResolver<string, bool>PublicationCode、 を入力パラメーターとして受け取りbool、出版物の場所 (古いシステムまたは新しいシステム) を示す を返しました。

AutoMapper の新しいバージョン (5+?) では、これができなくなったようです。新しい IValueResolver には、私が持っているソース モデルと宛先モデルのすべての組み合わせの一意の実装がsrc.PublicationCode必要dst.IsInNewSystemです。

値リゾルバーを間違った方法で使用しようとしているだけですか? より良い方法はありますか?リゾルバーを使用したい主な理由は、サービスをコンストラクターに注入しDependencyResolver、コードでなどを使用する必要がないことです (私は Autofac を使用しています)。

現在、次の方法で使用しています。

これは、PublicationCode プロパティを含む、私が持っているいくつかのデータ モデル クラスの 1 つです)。この特定のクラスは、次のビュー モデルにマップされます。

これら 2 つのクラスのマッピング定義は (式は IProfileExpression です)、関連のないマッピングは削除されています。

そしてリゾルバ:

そしてマッパーの使用:

0 投票する
2 に答える
1930 参照

automapper - AutoMapper 5 の異なるマッピング間で ValueResolver を再利用する方法は?

AutoMapper を 5.0.2 にアップグレードしようとしましたが、問題が発生しました。

移行ドキュメントによると、値リゾルバーは宛先オブジェクトにアクセスできるようになりました。

ソース/宛先モデルへのアクセスを許可するように、値リゾルバーの署名が変更されました。

これにより、各値リゾルバーが正確に 1 つの宛先タイプに関連付けられるという結果になります。

ただし、一部の値リゾルバーは複数の宛先タイプに使用されます。たとえば、DTO のすべての ID プロパティのマッピング中に使用されるリゾルバーがあります。リゾルバーは、リゾルバーに挿入されたサービスを使用して ID を変更します。

AutoMapper 5 で再利用可能な値リゾルバーをどのように定義すれば、まったく同じ実装で各宛先タイプに専用のリゾルバーを作成する必要がなくなりますか?

注: 値を直接操作する代わりに値リゾルバーを使用する主な理由は、依存性注入です。この回答によると、値リゾルバーは、マッピング中に依存関係が注入されたサービスを使用する最良の方法です。

0 投票する
1 に答える
2804 参照

.net - Automapper を使用してダイナミックからプロパティをコピーする

JSON から動的に構築されている動的オブジェクト (実際には、JSON.NET の JObject) があります。そのプロパティを既存のオブジェクトにコピーしたいと考えています。動的オブジェクトのプロパティは、ターゲット オブジェクトの型に存在する必要があります。存在しない場合は、エラーが発生してもかまいません。これについては、最新バージョンの Automapper を検討しています。JObject から適切な型へのマップを作成しようとしましたが、JObject のプロパティが内部ディクショナリに格納されているため、うまくいかないと思います。これはまったく可能ですか?

0 投票する
1 に答える
469 参照

c# - double からのマッピング

Automapper 5.0.2.0 を使用して、TypeA から TypeB にマップしようとしています。

長さはインチ単位で格納されていると仮定し、次のマッピング プロファイルを作成しました。

そして私はそれを次のように使用します:

ただし、最後の行で次のエラーがスローされます。

これは、Automapper が処理する非常に単純なケースのように思えますが、エラーを修正できないようです。任意の提案をいただければ幸いです。

0 投票する
1 に答える
500 参照

c# - Automapper v5 アップグレード後の空のプロパティ値

以下のコードは、Automapper の v3 では機能していましたが、v5 では機能しなくなりました。 UPDATE v4でも動作します。

CallScheduleProfileそのコンストラクターでTitle、値を渡すクラスのインスタンスにプロパティを設定しますtrue

CallScheduleProfileViewModelそのコンストラクターで、とTitleの値を渡す別のクラスのインスタンスにプロパティを設定します。true"Title"

AutoMapper で 4 つのクラスすべてのマッピングをセットアップしてから、Map を呼び出します。

その結果、マップの後、TitleプロパティCallScheduleProfileViewModelのブール値はありますtrueFriendlyName、コンストラクターで設定されていても空です。

私が信じているのは、コンストラクターCallScheduleProfileViewModelが呼び出されFriendlyNameて割り当てられているということですが、マッピングが発生すると、コンストラクターが呼び出され、存在するEntryプロパティがマップされ、それがプロパティにUxEntry割り当てられ、TitleデフォルトFriendlyNameでは null になります。その値FriendlyNameに存在しないUxEntryものはコピーされません。

FriendlyNameその仮定は間違っているかもしれませんが、どちらにしても、マッピングにデータを入力するにはどうすればよいですか?

更新: ネストされた型に関する Automapperのドキュメントを確認しましたが、ドキュメントで提供されているコードにも問題が存在します。文字列プロパティをコンストラクターに追加してInnerDestその値を設定すると、その値が null になった後です。OuterDestMap