2009-06-11 1 views
0

私はASP.NET 2.0 Webサイトを開発しています。データアクセス層とビジネスロジック層を作成しました。プレゼンテーションレイヤーでは、データセットとしてビジネスレイヤーからデータを戻しています。ビジネスレイヤーからプレゼンテーションレイヤーにデータを返す

私の質問は、データセットまたはオブジェクトコレクション(たとえば、データベース内のカテゴリテーブルを表すカテゴリオブジェクト)を使用するかどうかです。データベーステーブル(共通オブジェクト)にマップされているすべてのクラスを定義しました。しかし、プレゼンテーション層のカテゴリテーブルのすべてのレコードが必要な状況があります。私はちょうど混乱しています。私は何をすべきか?

+0

@Harper Shelby:クローバーを編集します。あなたがいくつかのことを逃したので、私は私のところに戻りました。 – Welbog

答えて

3

データセットを返す必要はありません。オブジェクトを返す必要があります。

一般に、データアクセスレイヤーとビジネスロジックレイヤーがある場合は、エンティティーレイヤーが必要です。エンティティレイヤは、データベース結果セットのメモリ内での再表現になります。データベースから1行を返すと、entitiyオブジェクトが1つ読み込まれます。複数の行を返す場合は、各行にエンティティをロードし、プレゼンテーション層で消費されるエンティティのコレクションを返します。

たとえば、.net 2.0以上を使用している場合、エンティティタイプのジェネリックコレクションを作成して、さまざまなタイプのコントロールをこれらのコレクションに簡単にバインドできます。

希望はあなたに役立ちます。

0

私は状況に応じて両方の方法を使用しました。グリッド内のテーブルからデータを表示するだけでよい場合、データセット(またはデータテーブル)メソッドはひどいわけではありません。フィールドがテーブルに追加されると、自動的にグリッドに表示されるためです。グリッドに列が表示されます。私は、この方法をもっと素早く汚い方法のように見ています。

0

データセットはまったく返されません。あなたは密接にあなたのサービスをデータベースに結合しています。将来、データベースが進化すると、データセットを使用するものを変更することになります。データベースとサービスの間に抽象化レイヤーを作成する必要があります。

+0

一般的なオブジェクトはもう少し作業ですが、長期的には優れています。 – eschneider

1

オブジェクトの返却やオブジェクトのIEnumerable/IListなどをお勧めします。

DBアクセスに応じて、カテゴリオブジェクトのリストを手動で作成するか、LINQ2SQLまたはADO.NET Entityフレームワークなどのものを使用して、必要に応じてキャッシュすることができます。

0

私はオブジェクト/コレクションソリューションを利用したいと思います。したがって、テーブルから1行を返す場合は1つのオブジェクトがあり、複数の場合はジェネリックコレクションを使用します。一般的なコレクションは、ボクシング/アンボクシングのヒットを避けることができます。

[編集]私はそれに殴られたようです[/編集]

0

あなたは、データベース内の各テーブルを表すクラスを持つ、実体層を作成する必要があります。そしてそれらのクラスのリストを返します。

関連する問題