5

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

例如:

ICollection<type> GetAllRules();

我会为 type 输入什么,因为它需要两个表?

谢谢

史蒂夫

4

1 回答 1

8

我不会坚持为此建立一个存储库。

正如福勒所说

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

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

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

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

于 2013-07-29T16:39:37.570 回答