repository-pattern - 实现存储库模式时,查找值/表是否应该获得自己的存储库?

标签 repository-pattern lookup-tables

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

Snippet of modified BISDM schema

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

查找是否应该获得自己的存储库接口(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/

相关文章:

qt - 使用多个键实现类似 QHash 的查找

c# - 如何制作通用存储库?

sql-server - 数据仓库模型和查找表

c# - ORM/如何处理Domain对象和Persistent对象的对应关系?

c# - 存储库模式和本地缓存

c++ - 给定 200 个字符串,什么是键控关系值 LUT 的好方法

python - 如何使用 Pandas 系列作为另一个系列的查找

c - 嵌入式软件 - 为什么查找表中需要 'const'?

c# - 单元测试 SQLite 存储库生成“无此类表”错误

c# - 存储库应该使用对象还是原语?