2011-01-30 7 views
2

私は3層システムとしてこのASP.NETアプリケーションを設計しています。サービスレイヤ、データレイヤ、およびユーザーインターフェイス私はまた、私のデータスキーマに適切にマッピングされたサービス層でPOCOSを使用しています。私のデータレイヤーはリポジトリパターンに従います。サービスまたはデータレイヤのパラメータとしてのオブジェクトまたは値

私のサービスレイヤ/データレイヤでは、自分のドメインエンティティを自分のメソッドのパラメータとして使用する必要がありますか、すべてのプロパティを平坦化する必要があります。ここでのベストプラクティスは何ですか:

この:

public void AddProduct(ProductDTO newProduct) 

か:

public void AddProduct(string ProductName, int Category) 

私の印象は最初のものが優れている、問題は、ObjectDataSourceのはそれをうまく再生されないということであるとされます最初のアプローチで動作するオブジェクトをデータバインドするための代替手段があるか、手動バインディングを使用する必要があります。

+1

あなたのオブジェクトに20のプロパティがある場合、あなたは何をするつもりですか?もちろん、DTOを使用してください! –

+0

そして、これらのDTOをWebフォームとどのように結び付けるのですか? ObjectDatasourceはそれらをサポートしておらず、手動でUIの20個のプロパティをバインドするのは苦痛です。 – Luis

+0

コメントありがとうございます。私は自分のデータバインディングフレームワークを書いてしまい、objectdatasourceをすべて削除しました。 – Luis

答えて

4

間違いなくDTOを使用します。それ以外の場合は、プロダクトにプロパティを追加または削除するたびに、すべての呼び出し、パッシングメソッドおよびコールメソッドからパラメータを追加および削除します。

DTOを使用すると、呼び出し側と呼び出されたメソッドを変更/更新するだけで、渡す必要があるパラメータの数を考える必要があります。

+0

これらのDTOをどのようにWebフォームにバインドしますか?コードの背後にあるイベントを使用して、フォーム内のコントロールに手動でバインドする必要がありますか? – Luis

+0

現在あなたは何に拘束していますか?そのオブジェクトにバインドして、オートマッパーのようなものを使ってDTOにマップすることはできませんでしたか? – Divi

+0

だから、私は、入力フォームをどこに私は、製品のproeprties、名前、カテゴリなどを挿入していると言ってボタンを押して、私はする必要があります:DTOのインスタンスを作成し、手作業ですべてのproeprtiesをDTO DTOをパラメータとして使用してServiceメソッドを呼び出します。私がフラットなプロパティを使うならば、私がしなければならないのは、オブジェクトのデータソースをセットアップすることだけです。 – Luis

関連する問題