0

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

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

4

6 に答える 6

3

データセットを返すのではなく、オブジェクトを返します。

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

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

これがお役に立てば幸いです。

于 2009-06-11T14:18:34.063 に答える
1

オブジェクトまたはオブジェクトの IEnumerable/IList などを返すことをお勧めします。

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

于 2009-06-11T14:11:12.757 に答える
0

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

于 2009-06-11T14:02:13.150 に答える
0

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

于 2009-06-11T14:05:22.940 に答える
0

オブジェクト/コレクション ソリューションを使用します。したがって、テーブルから 1 つの行を返す場合は 1 つのオブジェクトがあり、複数を返す場合はジェネリック コレクションを使用します。ジェネリック コレクションは、ボクシング/アンボクシング ヒットを回避します。

[編集]私はそれに打ちのめされたようです[/編集]

于 2009-06-11T14:22:30.997 に答える
0

データベース内の各テーブルを表すクラスを持つエンティティレイヤーを作成する必要があります。そして、それらのクラスのリストを返します。

于 2011-07-15T20:59:40.117 に答える