【发布时间】:2019-11-13 10:07:26
【问题描述】:
我一直在阅读有关存储库模式以及如何正确实现它的信息。
我对一个重要问题感到困惑。
假设我们有一个通用存储库,其中包含 Add()、Remove()、GetById() 等基本操作,并且每个实体也有一个特定存储库(例如 ProductRepository、UserRepository 等)
我们是否应该在特定的存储库中定义实体相关的操作?例如,在 ProductRepository 中,我应该声明 GetProductsInCategory()、GetProductsByBrandId() 等方法还是服务层的责任?
那里有很多相互矛盾的信息,例如,this answer 声称我刚刚提出的问题的答案是否,但另一方面在this tutorial video(有很多观点)中,讲师声称我的问题的答案是是。
我真的对我们必须在存储库中实现的实际方法和操作感到困惑。
【问题讨论】:
-
这听起来像是主要基于意见的东西。 C# 本身没有关于此的内容。我个人会坚持使用泛型 Add 等,因为类名和函数参数以及返回类型应该使类型足够清晰
-
@fredrik 如果你这样想的话,一半的计算机科学和软件工程是基于意见的!但是在这个问题的情况下,我不认为它是基于意见的,我认为(我提到的)一个小组可能是错误的并且忽略了关于存储库模式的关键点,我看到两个小组都对自己的意见很确定,而且他们似乎有证据证明他们所说的是正确的。
-
@AmirHosseinAhmadi aaaannnnnddd...您刚刚描述了基于意见。
标签: c# design-patterns repository-pattern