0

アプリケーションにデータ層を追加する必要があるプロジェクトに取り組んでいます。私はいつも、データ層が CRUD 機能を純粋に担当していると考えてきました。実際にはロジックを含める必要はありませんが、ビジネス層が操作するデータを取得するだけです。

ただし、このシナリオでアプリを正しく構成したかどうかわからないため、プロジェクトに少し混乱しています。

基本的に、特定の価格設定のしきい値内に収まる製品のリストをデータベースから取得しようとしています。現時点では、基本的に価格>最小しきい値および価格<最大しきい値のすべての製品を返す関数がデータレイヤーにあります。しかし、これは間違っているのではないかと考えさせられました。データ層は単純にすべての製品のリストを返し、ビジネス ロジックはフィルタリングを行うべきですか?

データ層は、ビジネス層が生データを取得できるようにするメソッドを単に提供する必要があるのか​​ 、それともフィルタリングされたデータを取得する責任があるのか​​ についてかなり混乱していますか?

誰かがこれを詳細に説明している記事や何かを持っているなら、それは非常に役に立ちます.

ありがとう

4

2 に答える 2

1

データ層の目的は、データ関連のデータ リポジトリとのやり取りを行うことです。本当に純粋にしたい場合は、データ層を 2 つの部分に分けることができます: データD抽象層とデータA非依存層です。DIL は、インターフェイスしているデータ リポジトリの正しいクエリを組み立てる役割を果たします (たとえば、SQL Server または Oracle の選択を提供する場合があります)。一方、DAL は DIL の上に位置し、適切なメソッドを呼び出してデータを取得します。必要があります (たとえば、呼び出すストアド プロシージャまたはクエリするテーブル/ビューを指定する場合がありますが、DIL は実際に呼び出しを実行する責任があります)。LDIL

あなたの場合、データレイヤーでフィルターを削除します。つまり、呼び出し元はしきい値を渡す必要があります。疑似コードでは、メソッド シグネチャは次のようになります。

public YourDataObjects[] GetProducts(decimal lowerPrice, decimal upperPrice) { ... }

ほとんどすべての言語に配列があるため (使用している言語を指定していません)、戻り値の型に配列を使用しました。これが、decimalしきい値に型を使用する理由でもあります。

于 2013-11-01T10:08:52.090 に答える