0

我正在使用存储库模式,并且已经使用了很长时间,但是有一件事我从来没有真正找到一个好的解决方案。我经常需要访问与多个实体相关的数据,而且我找不到什么感觉像是放置该功能的好解决方案。几个案例:

假设系统中有拥有任务的用户:

  • 我需要检索每个用户的最新任务列表作为用户到任务的配对,例如Dictionary<int, int> GetUsersRecentTask()
  • 我需要生成该月所有用户及其任务的报告。
  • 我需要生成系统中所有对象的统计信息。

现在通常我会把它放在说用户存储库中,但感觉不对

我也尝试将它放在更高级别的服务中,但将数据访问放在那里感觉不对

所以我最好把它放在哪里。

4

1 回答 1

1

不要将存储库模式视为教条。这只是一个概念。因此,UsersRepository 具有 GetUsersRecentTask,而您有不同的存储库,例如:带有 GetUsersReport(包括任务)的 ReportsRepository 和带有 Get[Object]Stats 的 StatisticsRepository。

虽然存储库模式最初只处理业务对象,但如果您需要“较小”的对象(例如视图模型或只是数据结构(无行为)的报告数据),它仍然是一个很好的模式。因此,向 ReportsRepository 请求某个报告是有意义的。

您唯一需要注意的是,一些存储库处理业务对象,而其他存储库处理 DTO。

于 2012-12-06T08:16:54.457 回答