【发布时间】:2013-07-29 14:15:26
【问题描述】:
最近我一直在阅读有关使用存储库模式和 DI 来帮助创建易于测试的代码的内容,我想我大部分都了解它。但是我在一个问题上遇到了困难。我需要为我的应用程序业务层创建一个规则对象。要创建规则,我需要能够读取和写入两个表。您将如何实现一个对一个对象使用两个表的存储库?
例如:
ICollection<type> GetAllRules();
类型需要两个表,我应该输入什么?
谢谢
史蒂夫
【问题讨论】:
-
听起来规则是两个底层实体加上一些逻辑的聚合。因此,您可以将两个存储库分开,并使用“域服务”创建一个规则,该规则将与存储库交互。然后应用层与规则域服务交互。
-
最近我遇到了同样的问题。我使用具有所有通用属性的基类,然后使用动态对象来获取数据。但后来我们将规则表更改为包含数据版本的单个规则集表。这样数据更具相关性,我们不必使用动态对象。将来如果有一组新规则,只需将它们添加到表中并分配一个版本号。不确定这是否会对您有所帮助,但认为值得分享我的经验。
-
有点难以回答,但我可能会尝试 ICollection
GetAllRules();其中 Rule 具有您希望规则具有的所有字段。存储库的意义在于隐藏底层表结构。因此,例如,如果规则 ID 由其名称 + 内部 ID 号组成,但表将这些存储在单独的列中,则 GetAllRules 会从数据库中的内容进行映射,并将其作为 ID 公开给所有想要的人。 -
谢谢KingDave,我会试试你的方法
标签: c# dependency-injection repository-pattern