2

我正在基于BISDM的修改版本为多个数据库实体创建 RESTful 服务。其中一些实体具有关联的查找表,如下所示:

修改后的 BISDM 模式的片段

我决定使用存储库模式在数据持久性/检索之间提供清晰的分离;但是,我不确定在存储库中应该如何表示查找(而不是实体)。

查找应该有自己的存储库接口,与关联实体“共享”一个,还是应该有一个通用的 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

不,存储库应该代表领域模型概念,而不是实体级别的概念,当然也不是数据库级别。考虑一下您想要对域的给定组件执行的所有操作,例如 Spaces。

您想要做的一件事是GetSpaceCategories()。这绝对应该包含在 Spaces 存储库中,因为任何处理 Spaces 的人都希望访问 Space 类别,而不必实例化其他一些存储库。

我认为通用存储库会适得其反。将存储库视为实用程序类实际上可以保证任何中等复杂的操作都必须实例化两个存储库。

于 2009-07-22T22:04:49.160 回答