2

BISDMの修正版に基づいて、いくつかのデータベース エンティティ用の RESTful サービスを作成しています。これらのエンティティの一部には、以下に示すようにルックアップ テーブルが関連付けられています。

変更された BISDM スキーマのスニペット

データの永続化と取得を明確に分離するために、リポジトリ パターンを使用することにしました。ただし、ルックアップ ( entity ではなく) をリポジトリでどのように表現する必要があるかはわかりません。

ルックアップは独自のリポジトリ インターフェイスを取得する必要がありますか、関連付けられたエンティティと「共有」する必要がありますか、それとも汎用の ILookupRepository インターフェイスが必要ですか?

現時点では、これらのルックアップは読み取り専用です。ただし、サービスを介してルックアップを編集したい場合があります。

Option 1:
   ISpaceRepository.GetSpaceCategoryById(string id);
Option 2:
   ISpaceCategoryRepository.GetById(string id);
Option 3:
   ILookupRepository.GetSpaceCategoryById(string id);

ちなみに、この質問は、ルックアップ テーブルと RESTful Web サービスに関する別の質問に関連しています。

4

1 に答える 1

3

いいえ。リポジトリは、エンティティ レベルの概念ではなく、データベース レベルの概念ではなく、ドメイン モデルの概念を表す必要があります。スペースなど、ドメインの特定のコンポーネントでやりたいことをすべて考えてみてください。

やりたいことの 1 つは、GetSpaceCategories() です。スペースを扱う人は、他のリポジトリをインスタンス化せずにスペース カテゴリにアクセスしたいので、これは必ずスペース リポジトリに含める必要があります。

一般的なリポジトリはかなり非生産的だと思います。リポジトリをユーティリティ クラスのように扱うと、ある程度複雑な操作では両方のリポジトリをインスタンス化する必要があることが事実上保証されます。

于 2009-07-22T22:04:49.160 に答える