我正在基于 BISDM 的修改版本为多个数据库实体创建 RESTful 服务。 。其中一些实体具有关联的查找表,如下所示:
我决定使用存储库模式来提供数据持久性/检索之间的清晰分离;但是,我不确定应如何在存储库中表示查找(而不是实体)。
查找是否应该获得自己的存储库接口(interface),与关联实体“共享”一个,还是应该有一个通用的 ILookupRepository 接口(interface)?
目前,这些查找是只读的;但是,有时我们可能希望通过服务编辑查找。
Option 1:
ISpaceRepository.GetSpaceCategoryById(string id);
Option 2:
ISpaceCategoryRepository.GetById(string id);
Option 3:
ILookupRepository.GetSpaceCategoryById(string id);
顺便说一句,这个问题与另一个关于 look-up tables & RESTful web services 的问题相关。 .
最佳答案
没有。存储库应该代表领域模型概念,而不是实体级别概念,当然也不是数据库级别。考虑一下您想要对域的给定组件(例如空间)执行的所有操作。
您想要做的事情之一是 GetSpaceCategories()。这绝对应该包含在 Spaces 存储库中,因为处理 Spaces 的任何人都希望访问 Space 类别,而无需实例化其他存储库。
我认为通用存储库会适得其反。将存储库视为实用程序类实际上可以保证任何中等复杂的操作都必须实例化两个存储库。
关于repository-pattern - 实现存储库模式时,查找值/表是否应该获得自己的存储库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1168430/