最近我一直在研究使用仓储模式和依赖注入来帮助创建易于测试的代码,我认为我大部分都理解了。然而,我有一个问题很难解决。我需要为应用程序的业务层创建一个规则对象。为了创建规则,我需要能够读写两个表。你会如何实现一个使用两个表的仓储来创建一个对象呢?
例如:
ICollection<type> GetAllRules();
我应该在类型中放什么,因为它需要两个表格?
谢谢
史蒂夫
最近我一直在研究使用仓储模式和依赖注入来帮助创建易于测试的代码,我认为我大部分都理解了。然而,我有一个问题很难解决。我需要为应用程序的业务层创建一个规则对象。为了创建规则,我需要能够读写两个表。你会如何实现一个使用两个表的仓储来创建一个对象呢?
例如:
ICollection<type> GetAllRules();
我不会坚持要有一个仓库来管理它。
正如Fowler所说:
就概念而言,Repository封装了存储在数据存储中的对象集和对它们执行的操作,提供了更加面向对象的持久化层视图。
这可能是为什么大多数实现倾向于公开纯域对象而不是衍生对象(您的Rule对象似乎是衍生对象)。
我将为您提到的两个表格分别拥有两个仓库,然后我将创建一个工作单元以公开所有仓库,然后我将创建一个业务层服务来负责合成处理。
这种方法的优点是,仓储层保持干净,这里没有涉及业务处理,也没有向持久化层引入任何不清晰的规则。