我现在在一些.NET项目中使用了Repository Pattern,但我总是回过头来讨论这个问题:
将存储库视为可查询数据存储,人们可能会争辩说,在command-query separation原则中,在存储库中使用命令(或写操作)是一种误解。另一方面,在同一个类中保留与相同域对象有关的方法可以简化编码和使用,并提升DRY和KISS原则。
您有哪些不同的观点/论点?福勒或埃文斯会说什么?
答案 0 :(得分:2)
对我来说,拥有持久性逻辑&在一个地方引用基础技术(如O / RM)比通过读/写责任分割更重要。所以我结合命令&每个域的一个具体存储库中的查询聚合根,通常使用持久性技术特定的抽象基类(Nhibernate,Entity Framework等)。
我将这些分开的唯一一次是当我使用事件源进行完整的CQRS实现(命令/查询责任隔离)时,即在我的代码库的完全不同的区域中针对不同的数据存储进行读写时。