質問

<のhref = "http://www.lostechies.com/blogs/jimmy_bogard/archive/2009/09/17/the-case-for-two-way-mapping-in上非常に興味深い議論がありました-automapper.aspx」REL = "nofollowをnoreferrer"> AutoMapperに関するLosTechies(引数/ 2ウェイマッピングに対して)。の

これは実際に起因する私は現在を通して働いている問題に私の注意を引きました。私はそのような私のユーザーへの料金/納期などの情報を提供するために、出荷作品に取り組んでいます。実際のサービスを一元化するために、私は、任意のドメインエンティティを持続するWCF Webサービスを持っています。

ドメインモデルを単純化するために、私は基本的に2クラスがあります:

public class Shipment
{
 public IList<Item> Items{get;set;}
}

public class Item
{
 //some primitive properties
}

私はまた、ワイヤの両端の負荷を軽減するために作成されたのDTOの対応するセットを有します。 (Webサービスに触れるものは何でもまたは断片、)プレゼンテーションピース、ドメインモデルの知識がないのDTOを使用します。

私の質問はここに来ます。出荷を作成するために、サービスは、項目のリストを受け付けます。すべてのWebサービスの背後に隠されているの出荷を、作成するためのロジックがあります。要するに、これはItemDTOがワイヤーを通過していることを意味します(クライアント - >サーバー)、出荷台数が作成され、その後、ShipmentDTOは( - >クライアントサーバー)戻されます。さて、ShipmentDTOは2ウェイのマッピングシナリオを作成するだけでなくItemDTOの子リストを持っています。

これは、単純なCRUD操作以上であると私はコマンドメッセージパターンにfarely新たなんだので、私は社会がこの問題を解決するだろうか興味があります。

あなたは2ウェイのマッピングにDTO両方の方法を渡すのですか?

サンプルの使用(プレゼンテーション層):

List<ItemDTO> list = new List<ItemDTO>();
//add items to list


ShipmentServiceClient client = new ShipmentServiceClient();
List<ShipmentDTO> shipments = client.GetShipments(list);

//shipments are now displayed to the user
//with respective costs and other useful data
役に立ちましたか?

解決

私はかなり把握しなかったことを記事で言及された

何かが応答した言葉遣いでした。 「着信のDTOは、メッセージを指揮するためにマッピングされています」。 DTOは、双方向とすることができる、と言って、与えられたマッピング(AutoMapper)が、しかし、単方向である。

他のヒント

あなたの質問のポイントを見逃す危険で、私はあまりにも長い間、間違った理由のためにDTOを再使用していないとして、双方向DTOを使用することがOKであると言うでしょう。サーバはそれを取り戻すとき、ItemDTOsは基本的に同じになるようにあなたのケースでは、完全に各ItemDTOを移入アイテムの束のための出荷を作成するためのサーバーへの要求は、ありますか?それとも、あなたは本当にいくつかの項目を出荷するために要求したが、戻ってくるItemDTOは、サーバ(例えば、アイテム単位の輸送コスト、在庫状況など)によって満たさいくつかの追加の詳細を持っていますか?後者の場合ならば、私はあなたが出荷のために要求されている特定の項目と項目について、出荷の詳細の両方を表現するためにItemDTOを再使用しないでくださいと言うでしょう。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top