具有多个表的存储库模式

本文关键字:存储 模式 | 更新日期: 2023-09-27 18:25:17

最近我一直在学习如何使用存储库模式和DI来帮助创建易于测试的代码,我想我大部分都理解它。然而,我在一个问题上遇到了困难。我需要为我的应用程序业务层创建一个Rules对象。要创建一个规则,我需要对两个表进行读写的能力。如何实现一个将两个表用于一个对象的存储库?

例如:

ICollection<type> GetAllRules();

由于打字需要两张桌子,我该输入什么?

感谢

Steve

具有多个表的存储库模式

我不会坚持要有这样的存储库。

正如Fowler所说的

从概念上讲,Repository封装了数据存储中持久化的一组对象以及对它们执行的操作,从而提供了持久化层的更面向对象的视图。

这可能就是为什么大多数实现倾向于公开纯域对象,而不是派生对象(您的Rule对象似乎就是派生对象)。

对于您提到的两个表,我将有两个存储库,然后我将有一个工作单元来公开所有存储库,再由一个业务层服务负责复合处理。

这种方法的一个优点是存储库层保持干净,这里不涉及业务处理,也不向持久性层引入不明确的规则。