2010-12-02 11 views
4

1)私は、推奨する方法を知りたいのですが、&は10の属性を持つオブジェクトに対してDTOを返します。私はDTOオブジェクトで2を返したいだけです。asp.netでDTOを作成するには?

2)DTOには独自の名前空間が必要ですか?はいの場合は、どうやって整理しますか? 1つのクラスファイル内の各DTO、または1つのクラス内のすべてのDTO?

サンプルコードを入力してください。

答えて

10

DTOはパブリックゲッター/セッターで構成されたダムオブジェクトです。私は一般にSomeProject.Dtoという別の名前空間に入れます。

public class CustomerDto { 
    public int Id { get; set; } 
    public string Name { get; set; } 
    public LocationDto HomeAddress { get; set; } 
} 

私は一般的に、おそらくいくつかの平坦化と、DTOと対応するドメインクラス間で同じプロパティ名を維持しようとします。例えば、私の顧客は、Addressオブジェクトを持っているかもしれませんが、私のDTOをに平坦化している可能性があります:

public class CustomerDto { 
    public int Id { get; set; } 
    public string Name { get; set; } 
    public string HomeStreet { get; set; } 
    public string HomeCity { get; set; } 
    public string HomeProvince { get; set; } 
    public string HomeCountry { get; set; } 
    public string HomePostalCode { get; set; } 
} 

あなたは劇的にジミー・ボガードのAutoMapperを使用してのDTOに変換するドメインオブジェクトの反復マッピングコードの量を減らすことができます。

http://automapper.codeplex.com/

+0

サンプルと説明をありがとうJames =)各DTOを別々のファイルに入れたり、すべてのDTOを1つのファイルに入れますか?あなただけのDTOのためだけに、たくさんの新しいクラスファイルで終わらないのですか? –

+2

私は各DTOを別々のファイルに入れました。それらはすべて別のフォルダにあり、簡単に折りたたまれて無視されます。 :) –

+0

@JamesKovacsは、クラスの代わりにメンバフィールド(ゲッターとセッターなし)だけで構造体を使用することには本当の利点がありますか? –

1

あなたの質問は非常にオープンしています。答えは、アプリケーションの規模に依存します。

一般に私は自分のDTOまたはViewModelを独自のアセンブリで作成します。私のDTOを取得するために、私はいくつかのサービス層が私の要求に基づいてそれらを作成する世話をしています。

具体的な例が必要な場合は、asp.netのAsp.NET MVCの例をご覧ください。 MVCを使用していないかもしれませんが、ViewModelの作成方法は少なくとも見ることができます。

+0

ありがとうブラウンマン。私のアプリケーションの規模はあまり大きくありません。しかし、DTOを作成している間は、基本的なDTO(1つの属性のみを返す)のためのseprateクラスファイルを作成することになります。私が知りたいのは、クラスファイルを減らし、DTOを効率的に管理する方法です。私はMVCを見ていきます。 –

+0

asp.netでのAsp.NET MVCの例に関する特定のリンクはありますか? – atiyar

+0

asp.netでチュートリアルを進めることで、良いアイデアが得られます。 http://geekswithblogs.net/michelotti/archive/2009/10/25/asp.net-mvc-view-model-patterns.aspxにも役立つ記事があります。 – Brownman98