我正在使用Repository模式,并且已经存在了很长时间,但有一件事我从未真正找到过一个好的解决方案。我经常需要访问与多个实体相关的数据,而我无法找到适合放置该功能的好解决方案。一些案例:
假设在系统中有用户具有任务:
Dictionary<int, int> GetUsersRecentTask()
现在通常我会把它放在用户存储库中,但它感觉不对。
我也尝试将它放在更高级别的服务中,但是它只是不适合将数据访问放在那里。
那么我最好放在哪里。
答案 0 :(得分:1)
不要将Repository模式视为教条。这只是一个概念。因此,UsersRepository具有GetUsersRecentTask,您可以使用不同的存储库,例如:带有GetUsersReport的ReportsRepository(包含任务)和带有Get [Object] Stats的StatisticsRepository。
虽然存储库模式最初只处理业务对象,但如果您需要“较小”对象(如View Models)或报告数据(仅仅是数据结构)(无行为),它仍然是一个很好的模式。因此,向ReportsRepository询问某个报告是有意义的。
您唯一需要注意的是,某些存储库处理业务对象,而其他存储库处理DTO。