問題タブ [automapper-2]
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.
automapper - Automapper: カスタム INamingConvention を活用するには?
私は、デザイナーが大文字とアンダースコア キーを本当に楽しんでいるように見えるデータベースで作業しています。単純な ORM を使用しているため、データ モデルでもこれらの名前を使用します。私は DTO を構築する必要があり、サービスを通じて公開しているため、標準的な名前を付けたいと考えています。 以下のコードは修正されました!テストはパスするので、複数の命名規則を使用する必要がある場合は、これを参考にしてください。
automapper - AutoMapper で慣例によるプロジェクションは可能ですか?
データベースから次のデータが返されました。
私のドメイン オブジェクトは次のとおりです。
組み込みの DataReaderMapper を使用すると、データベース データを含む IDataReader からのマッピングは簡単ですが、Address オブジェクトに値を設定することはできません。
理想的には、次のように DynamicMap を使用したいと思います。
これを行うと、order.Number が入力されますが、order.Address は null です。Order コンストラクターで Address クラスの新しいインスタンスを作成すると、(予想どおり) null ではありませんが、どのプロパティも設定されていません。
私はもう試した:
列名を単純な「Street」、「City」、および「State」に変更しましたが、うまくいきませんでした。
私はもう試した:
およびそれらのすべての組み合わせ。Address の各プロパティに ForMembers も指定しました。何も機能していません。
AutoMapper が慣例による平坦化をサポートしていることは知っていますが、慣例による射影 (AddressStreet を Address.Street にマップする必要があることを認識している場合) が不可能であることを発見したことから推測することしかできません。私が間違っている?
上記の例を機能させるにはどうすればよいですか???
アップデート
以下を使用して動作させることができました。
ちょっとゴツく見えるけど。
asp.net-mvc-3 - Automapper:TypeMap構成が欠落しているか、マッピングがサポートされていません
アクションが「テスト」を返す場合、それは機能します。'IEnumerable'を返す場合は、返しません(明らかに、TestViewModelとIEnumerableを期待するようにビューが変更されました)。私は何が間違っているのですか?私が理解していることから、リストタイプを明示的にマップする必要はありません。
これはおそらく簡単な答えですが、これを機能させるために過去2時間費やしたので、誰かが私に解決策を教えてくれれば幸いです。
c# - プロパティの名前変更と Automapper の問題を回避する方法
次のプロパティを持つ 2 つの c# クラス A と B があるとします。
Automapper を使用すると、クラス A からクラス B に問題なくマップできます。
Class A -Nameにリファクタリングするとどうなりますか。VS2010 の名前変更を使用します。
次に、クラスは
Automapper を使用しているため、リファクタリング担当者は B の名前も変更する必要があることを知る方法がありません。
最悪の場合、 AutoMapの後の B.Name が空であることがわかるまで、リファクタリングは何も文句を言いません....
この種の問題を回避するにはどうすればよいでしょうか。
c# - メモリリーク-どこにあるかを推測する
.Netプロジェクト(Windowsサービス)に取り組んでいますが、メモリリークが見つかりました。ANTSメモリプロファイラを使用して、私は判断しました-根本的な原因は管理されていないメモリスコープにあります。ただし、COM /COM+またはp/invoke-pure .Net(DataAcces-Fluent nHibernate、Automapper、WCF)は使用しません。
仮に、理由は何でしょうか?どうすればボトルネックを見つけることができますか..私はそのような種類の問題に直面して解決したあらゆる種類の経験に興味があります
もう少し詳細:
- 私はオブジェクトがどのように処分されているかを知っています(そしてそれを正しく行います)
- 私は(ほとんど)イベントを使用しません
- タイマーを使っています
- 私はマルチスレッドを使用しています(しかし、それはかなり並列性です)
- 私のアプリケーションはステートレスではありません-私はオブジェクトのライフサイクル中にオブジェクトを追跡しています
automapper - Automapperを使用して同じタイプの2つのコレクションをマッピングするときにコレクションをオーバーライドする
私のクラスは以下のように定義されています
ソースから宛先にマップする必要があります。ソースからのすべてのコレクションをマージして、それらを宛先にマップする必要があります。
マッピングを以下のように定義しました。しかし、このコードは私を助けません。すべてのコレクションをマージする代わりに、最後のコレクション(UnreportedDrivers)のみをマップして上位のコレクションをオーバーライドします。
このシナリオで私を助けてください。
前もって感謝します。
automapper - Automapper を使用して複数のコレクションを単一のコレクションにマッピングする
以下のコードを使用して、同じタイプのコレクションのグループを単一のコレクションにマップできます。
上記のソリューションを使用すると、3 種類のドライバーすべてを 1 つのコレクションにマップできます。私の宛先オブジェクト (ドライバー) には、ドライバーの種類を識別するのに役立つ DriverType というプロパティがあります。(バイクドライバー/車ドライバー/トラックドライバー)
上記のコードでは、追加するコレクションに基づいて DriverType プロパティを設定する方法を示しています。
例:私はハードコードする必要があります
DriverType = CarDrivers コレクション項目の CarDriverDriverType = BikeDriverfor BikeDrivers コレクション項目。
前もって感謝します
c# - 自動マッパーブールプロパティをyesまたはnoに
TypeAとTypeBの間のマッピングでは、すべてのブールプロパティを「はい」または「いいえ」にマッピングしたいと思います。<bool, string>
TypeAとTypeBの間のマッピングのためだけにマッピングが必要なので、マッピングをオーバーライドしたくありません。また、TypeAのブールプロパティはたくさんあるので、.ForMemberを使用したくありません。ForAllMembersにはトリックがあるかもしれませんが、それを機能させることはできません。
c# - 間違ったコンストラクターを使用している AutoMapper
今日、AutoMapper v1.1 を使用して完全に機能するアプリケーションをアップグレードして、AutoMapper v2.1 を使用するようにしましたが、以前のバージョンでは遭遇しなかったいくつかの問題に遭遇しています。
これは、 DtoからDomainオブジェクトへのコード マッピングの例です。
...
しかし、v2.1 で最初に遭遇した問題は、引数の 1 つが null であり、1 つの引数のコンストラクターを使用する必要がある場合に、AutoMapper が 2 つの引数を持つコンストラクターを使用しようとしていたことでした。
私はそれから使用しようとしました
しかし、解決できない「あいまいな呼び出し」エラーが発生し続けました。
私はそれから試しました
そして、パラメーターなしのコンストラクターを使用して TypeOne オブジェクトを正常に作成しましたが、プライベート セッター プロパティの設定に失敗しました。
AutoMapper の Web サイトでヘルプを探し、ソース コードをダウンロードして見栄えを良くしましたが、ConstructUsing の単体テストはあまり多くなく、ドキュメントもほとんどありませんでした。
v2.1 で変更する必要がある、明らかに欠けているものはありますか? v1.1からここまで変わったことに驚いています。
automapper-2 - AutoMapper: 子プロパティを上書きする代わりに更新する
子プロパティを持つクラスがあります:
新しい Person オブジェクトを構築するとき、オートマッパーに次のようなものを実行させたい:
しかし、Person オブジェクトが既にある場合は、それを埋めたいだけです。また、Person オブジェクトに既に Address が設定されている場合は、その Address オブジェクトも置き換えずに埋めたいと思います。基本的に:
理想的には、これを自動的に把握するように AutoMapper を構成できるようにしたいと考えています。つまり、Address が null でない場合は作成して設定し、null でない場合は更新します。
現在、次のように AfterMap を使用しています。
Address
オブジェクトは自己追跡エンティティであり、オーバーライドできない状態であるため、これを行います。
AfterMap を使用しないようにコードをリファクタリングする方法はありますか?