問題タブ [automapper-3]
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.
c# - サービス層エンティティをドメイン モデル エンティティにマップできません
one を使用してデータを取得しようとしていますGetData
。このビジネス メソッドは、このアクション メソッドのサービス レイヤーを介してコントローラーから呼び出されます。
次のエラーが表示されます。
System.Collections.Generic.List<BusinessService.Report.MeanData>
タイプ ' ' を ' ' にDomainModels.Reports.MeanData
暗黙的に変換することはできません
同僚が Automapper を使用することを提案していたので、私は彼のために働いたものに基づいて、次のようにアクション メソッドを変更しました。
次のエラーが表示されます。
AutoMapper.Mapper.Map<DomainModels.Reports.MeanData,BusinessService.Report.MeanData>
「 (DomainModels.Reports.MeanData)」に最適なオーバーロードされたメソッドの一致には、無効な引数が含まれています
DomainModel エンティティ:
生成された にある BusinessService エンティティにはreference.cs
、DomainModel エンティティと同じ名前のプロパティがあります。
両方のインスタンスで何が間違っていますか?
c# - AutoMapper には、カスタム リストのすべてのプロパティが含まれます
A を B にマップすると、CustomCollection の X と Z を除くすべてのプロパティが正しくマップされます。
CustomCollection は初期化された SomeObject のリストを正しく取得し、SomeObject.Name も正しくマップされます。
コレクションで宣言したカスタム プロパティ X、Z のみがマップされません。
私は何を間違っていますか?
私が見つけた唯一の方法は、以下のようなアフター マッピングを行うことですが、それは automapper を使用する目的をやや無効にし、CustomCollection に新しいプロパティを追加するたびに壊れます。
c# - Automapper と、親オブジェクトを参照するオブジェクトのコレクション
これを(架空の)例で説明すると、おそらく最も簡単です。
Order オブジェクトを含む nHibernate モデルがあります。この Order オブジェクトには、OrderItem nHibernate オブジェクトのコレクションが含まれています。
OrderItemDto のコレクションを含む Order ViewModel があります (実際には POCO です)。
私の UI では、注文オブジェクトと OrderItems のリストを表示し、それらはリストで編集可能です。モデル バインディングは、OrderViewModel および OrderItemDto コレクションへのデータの取り込みを処理します。
これが私のモデルです
ここに私のビューモデル/ dtoがあります
私の問題は、OrderItemDto のコレクションを、注文に関連付けられている OrderItem オブジェクトのコレクションにマップする方法です。orderItem オブジェクトのライフサイクルを制御したい。IE、OrderItemDto に Id がある場合、リポジトリから orderItem を取得したいと考えています。存在しない場合は、新しいものを作成し、その注文プロパティを親注文に設定します。
私が欲しいと思うものの擬似コードは次のとおりです。
しかし、IValueResolver がこのように機能しないため、明らかにこれは機能しません。
このAutoMapper を使用して子のプロパティに親参照を割り当てる方法は似ていますが、すでに存在する場合、リポジトリから OrderItems を取得することはできません。
ありがとう、デイブ
linq - linqを使用したオートマッパーはどうですか?
わかりました、私がしなければならないことの良い例を見つけるのに本当に苦労しています。じゃ、ここで質問します。
Customer という名前のエンティティ クラス (EF) と、CustomerViewModel という名前の対応するビュー モデル クラスがあるとします。
AutoMapper を使用して、次のマッピングを作成しました。
このマッピングを利用するには、次のコードをどのように変更すればよいでしょうか?
前もって感謝します。
c# - AutoMapper を使用した子コレクションのマッピング
オブジェクトのコピーを作成するために Automapper を使用しています
私のドメインは、次の例に縮小できます
Store
のコレクションを持っていると考えてくださいLocation
以下はストアインスタンスの例です
私のマッピングは次のように構成されています
マップされたインスタンスを次のように取得します
マッピングから取得した宛先オブジェクトには、ソースに存在する同じ 2 つのインスタンスを持つ Locations コレクションがあります。
Object.ReferenceEquals(source.Locations[0], destination.Locations[0])
戻り値TRUE
私の質問は
マッピング中に Location の新しいインスタンスを作成するように Automapper を構成するにはどうすればよいですか。